From 2cedcf88d444478540d417658f6f6d2e58035423 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Mon, 17 Mar 2025 12:26:47 -0400 Subject: [PATCH 1/5] fix(upload-form): Minor fix to subjects field help text. --- .../invenio_app_rdm/overridableRegistry/fields/SubjectsField.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/invenio_app_rdm/overridableRegistry/fields/SubjectsField.js b/assets/js/invenio_app_rdm/overridableRegistry/fields/SubjectsField.js index ec9d92066..f55722a86 100644 --- a/assets/js/invenio_app_rdm/overridableRegistry/fields/SubjectsField.js +++ b/assets/js/invenio_app_rdm/overridableRegistry/fields/SubjectsField.js @@ -130,7 +130,7 @@ const SubjectsField = ({ clearable={clearable} description={undefined} /** Description is rendered separately */ fieldPath={fieldPath} - helpText={"For best results, choose a subject category at right."} /** Help text is rendered separately */ + helpText={undefined} /** Help text is rendered separately */ initialSuggestions={getIn(values, fieldPath, [])} label={ <> From 19aa7f712720a75ba6bc0ad07411831b2aa12aa0 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Tue, 18 Mar 2025 12:08:37 -0400 Subject: [PATCH 2/5] fix(docs): More documentation of Invenio service methods, components, record life cycle; known issues page --- README.md | 2 +- docs/build/.buildinfo | 2 +- docs/build/.doctrees/README.doctree | Bin 3860 -> 6794 bytes docs/build/.doctrees/api.doctree | Bin 268573 -> 316343 bytes docs/build/.doctrees/architecture.doctree | Bin 123738 -> 175395 bytes docs/build/.doctrees/changelog.doctree | Bin 28140 -> 43754 bytes docs/build/.doctrees/customizations.doctree | Bin 92359 -> 111552 bytes docs/build/.doctrees/developing.doctree | Bin 56148 -> 64884 bytes docs/build/.doctrees/environment.pickle | Bin 1304415 -> 1526367 bytes docs/build/.doctrees/in_depth.doctree | Bin 64449 -> 64495 bytes docs/build/.doctrees/index.doctree | Bin 4384 -> 4404 bytes docs/build/.doctrees/known_issues.doctree | Bin 0 -> 7690 bytes docs/build/README.html | 39 +- docs/build/_images/kc_works_logo_wordmark.svg | 3206 +++++++++++++++++ docs/build/_sources/README.md.txt | 25 +- docs/build/_sources/api.md.txt | 414 ++- docs/build/_sources/architecture.md.txt | 332 +- docs/build/_sources/changelog.md.txt | 61 + docs/build/_sources/customizations.md.txt | 73 + docs/build/_sources/developing.md.txt | 47 +- docs/build/_sources/in_depth.md.txt | 2 +- docs/build/_sources/index.rst.txt | 1 + docs/build/_sources/known_issues.md.txt | 14 + docs/build/_static/documentation_options.js | 2 +- .../_static/invenioRdmRecordLifeCycle.jpg | Bin 0 -> 275682 bytes docs/build/api.html | 616 +++- docs/build/architecture.html | 395 +- docs/build/changelog.html | 142 +- docs/build/cli_commands.html | 10 +- docs/build/configuration.html | 10 +- docs/build/customizations.html | 89 +- docs/build/developing.html | 77 +- docs/build/genindex.html | 9 +- docs/build/in_depth.html | 18 +- docs/build/index.html | 28 +- docs/build/infrastructure.html | 10 +- docs/build/installation.html | 16 +- docs/build/known_issues.html | 361 ++ docs/build/metadata.html | 10 +- docs/build/objects.inv | Bin 6881 -> 7983 bytes docs/build/reference.html | 10 +- docs/build/search.html | 9 +- docs/build/searchindex.js | 2 +- docs/source/README.md | 27 +- .../_static/invenioRdmRecordLifeCycle.jpg | Bin 0 -> 275682 bytes docs/source/architecture.md | 497 ++- docs/source/changelog.md | 5 + docs/source/conf.py | 2 +- docs/source/customizations.md | 99 + docs/source/index.rst | 1 + docs/source/known_issues.md | 14 + 51 files changed, 6286 insertions(+), 391 deletions(-) create mode 100644 docs/build/.doctrees/known_issues.doctree create mode 100644 docs/build/_images/kc_works_logo_wordmark.svg create mode 100644 docs/build/_sources/known_issues.md.txt create mode 100644 docs/build/_static/invenioRdmRecordLifeCycle.jpg create mode 100644 docs/build/known_issues.html create mode 100644 docs/source/_static/invenioRdmRecordLifeCycle.jpg create mode 100644 docs/source/known_issues.md diff --git a/README.md b/README.md index 55004f885..480193f74 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Knowledge Commons Works is a collaborative tool for storing and sharing academic research. It is part of Knowledge Commons and is built on an instance of the InvenioRDM repository system. -Version 0.3.5-beta8 +Version 0.3.8-beta11 ## Copyright diff --git a/docs/build/.buildinfo b/docs/build/.buildinfo index d71fe766e..c2d82762a 100644 --- a/docs/build/.buildinfo +++ b/docs/build/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: c534e3803c9cb7a80e2fd2d8105eeda9 +config: 772add5cf68197891edad7d893b36fb6 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/.doctrees/README.doctree b/docs/build/.doctrees/README.doctree index 639fc2fbcae7dcb7966499ce9d120abea46cbc3e..97c0ac9ee4d6606e8d8931f95cb77429fb007705 100644 GIT binary patch literal 6794 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

+

Each object in the data array will have the following fields:

@@ -655,17 +846,25 @@

A successful import response

+ + + + + - + + + + + - + - - + + @@ -673,11 +872,11 @@

A successful import response

- + - +

record_id

item_index

integer

The index of the record in the import request. (Starting with 0 for the first record.)

record_id

string

The ID of the new work.

The internal KCWorks ID of the new work.

source_id

string

The external identifier for the work that was provided in the import request using the import-recid scheme.

record_url

string

The URL of the new work.

The URL of the new work. This is the URL of the work’s landing page on KCWorks. Other URLs for the work, including the endpoints for API operations, are available in the links property of the record’s metadata object.

files

array

A list of the filenames for the files that were successfully uploaded. This is for convenience. Details about the files, including their size and checksum, are available in the files property of the metadata object.

object

An object whose keys are the filenames for the files that were successfully uploaded and whose values are 2 member arrays. The first member is a string representing the status of the file upload operation. The second member is an array of string error messages if any errors occurred during the upload. Further details about the files, including their size and checksum, are available in the files property of the metadata object.

collection_id

string

errors

array

A list of errors that occurred during the import process. These might include validation errors for certain fields in the provided metadata that did not prevent creation of the work. (Only provided if the request was made with strict_validation set to “false”.)

A list of objects, each of which describes an error that occurred during the import process. These might include validation errors for certain fields in the provided metadata that did not prevent creation of the work.

metadata

object

The metadata for the created work, in JSON format, following the KCWorks implementation of the InvenioRDM metadata schema described here.

The metadata for the created work, in JSON format, following the KCWorks implementation of the InvenioRDM metadata schema described here. The returned metadata will include internal KCWorks system fields such as created, updated, revision_id, id, etc. It is identical to the metadata that would be returned by a GET request to the records API endpoint on KCWorks.

@@ -690,7 +889,10 @@

A successful import response "item_index": 0, "record_id": "1234567890", "record_url": "https://works.hcommons.org/records/1234567890", - "files": ["file1.pdf", "file2.pdf"], + "files": { + "file1.pdf": ["success", []], + "file2.pdf": ["success", []] + }, "collection_id": "1234567890", "errors": [], "metadata": { @@ -701,14 +903,19 @@

A successful import response "item_index": 1, "record_id": "1234567891", "record_url": "https://works.hcommons.org/records/1234567891", - "files": ["file1.pdf", "file2.pdf"], + "files": { + "file1.pdf": ["success", []], + "file2.pdf": ["success", []] + }, "collection_id": "1234567890", "errors": [], "metadata": { /* ... */ } } - ] + ], + "errors": [], + "message": "All records were successfully imported." }

@@ -721,7 +928,7 @@

The token does not have the necessary permissionsContent-Type: application/json -

This response will include a JSON object:

+

This response will include a JSON object with the following fields:

{
     "status": "error",
     "message": "The user does not have the necessary permissions."
@@ -739,22 +946,41 @@ 

The request metadata is malformed or invalidstrict_validation request parameter was set to “true” and all of the supplied metadata objects raise validation errors, or b. the strict_validation parameter is set to “false”, but the validation errors affected fields that are required for the works to be created. c. the all_or_none request parameter is set to “true” and some of the supplied metadata objects raise validation errors.

-

The response will include a JSON object with the following fields:

+

The response will include a JSON object with the same shape as the successful response, but with the following differences:

+
    +
  • The status field will be “error”.

  • +
  • The data field will be an empty array.

  • +
  • The errors field will be an array of objects, each of which describes a work that failed to be created. In each object the record_id and record_url fields will be null, since the work was not created. The errors field will be an array of objects, each of which describes an error that occurred during the attempt to create the work. The metadata field will still contain the metadata that was provided in the request for reference.

  • +
-

If only some of the works to be imported are malformed or invalid, and the all_or_none request parameter is set to “false”, the response will be 207 Multi-Status.

+ +
+

A partially successful import response

+
+

NOT YET IMPLEMENTED. At present the all_or_none request parameter will always be “true”.

+
+

If only some of the works to be imported are malformed or invalid, and the all_or_none request parameter is set to “false”, the response will be 207 Multi-Status. In this case the response will be shaped much like the successful and unsuccessful responses described above, but there will be items in both the data and errors arrays. The items in the data array will be works that were successfully created, and the items in the errors array will be works that failed to be created.

+

The response will be shaped like this:

+
{
+    "status": "multi_status",
+    "message": (
+        "Some records were successfully imported, but some failed. Please check the "
+        "list of failed records in the 'errors' field for more information. Each failed "
+        "item should have its own list of specific errors."
+    ),
+    "data": [
+        {
+            "item_index": 1,
+            "record_id": "1234567891",
+            "source_id": "xxx1234567891",
+            "record_url": "https://works.hcommons.org/records/1234567891",
+            "files": {
+                "file1.pdf": ["success", []],
+                "file2.pdf": ["success", []]
+            },
+            "collection_id": "1234567890",
+            "errors": [],
+            "metadata": {
+                /* ... */
+            }
+        }
+    ],
+    "errors": [
+        {
+            "item_index": 0,
+            "record_id": null,
+            "source_id": "xxx1234567890",
+            "record_url": null,
+            "errors": [
+                {
+                    "field": "title",
+                    "message": "Required field missing."
+                }
+            ],
+            "files": {},
+            "collection_id": "1234567890",
+            "metadata": {
+                /* ... */
+            }
+        },
+    ]
+}
+
+

The request file upload failed

-
-

Only some of the works to be imported failed

-
HTTP/1.1 207 Multi-Status
-Content-Type: application/json
-
-
-

If the all_or_none request parameter is set to “false”, it is possible that some of the works to be imported were successfully created and others were not. In this case, the response will be 207 Multi-Status and will include a JSON object with the following fields:

-
{
-    "status": "multi_status",
-    "data": {
-        "succeeded": [
-            {
-                "item_index": 0,
-                "record_id": "1234567890",
-                "record_url": "https://works.hcommons.org/records/1234567890",
-                "files": ["file1.pdf", "file2.pdf"],
-                "collection_id": "1234567890",
-                "errors": [],
-                "metadata": {
-                    /* ... */
-                }
-            },
-        ],
-        "failed": [
-            {
-                "item_index": 1,
-                "message": "The request metadata is malformed or invalid.",
-                "errors": [
-                    {
-                        "field": "title",
-                        "message": "Required field missing.",
+                    "validation_error": {
+                        "metadata": {"creators" {"occupation": ["Unknown field."]}}
                     }
-                ]
-            },
-            {
-                "item_index": 2,
-                "message": "The file content is corrupted or invalid.",
-                "errors": [
-                    {
-                        "file": "file3.pdf",
-                        "message": "The file exceeds the maximum file size."
+                },
+                {
+                    "validation_error": {
+                        "metadata": {"publication_date": ["Date is not in Extended Date Time Format (EDTF)."]}
                     }
-                ]
+                },
+                {
+                    "file upload failures": {
+                        "sample.pdf": [
+                            "failed",
+                            ["File sample.pdf not found in list of files."],
+                        ]
+                    },
+                },
+            ],
+            "files": {
+                "sample.pdf": ["failed", ["File sample.pdf not found in list of files."]],
+            },
+            "collection_id": "1234567890",
+            "metadata": {
+                /* ... */
             }
-        ]
-    }
+        }
+    ]
 }
 
+

If an upload simply fails to complete and times out, the client will instead receive a 504 Gateway Timeout response.

@@ -1003,8 +1273,8 @@

Pagination

Requesting all collections

-
-
Request
+
+
Request
GET https://works.hcommons.org/api/group_collections HTTP/1.1
 
@@ -1145,18 +1415,18 @@
Successful Response Headers

Requesting collections for a Commons instance

-
-
Request
+
+
Request
GET https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons&sort=updated-asc HTTP/1.1
 
-
-
Successful response status code
+
+
Successful response status code

200 OK

-
-
Successful Response Body:
+
+
Successful Response Body:
{
     "aggregations": {
         "type": {
@@ -1266,8 +1536,8 @@ 
Successful Response Body: -
Successful response headers
+
+
Successful response headers
@@ -1290,18 +1560,18 @@
Successful response headers

Requesting collections for a specific group

Note that if you specify a commons_group_id value, you must also provide a commons_instance value. This is to avoid confusion if different Commons instances use the same internal id for groups.

-
-
Request
+
+
Request
GET https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons&commons_group_id=12345 HTTP/1.1
 
-
-
Successful response status code
+
+
Successful response status code

200 OK

-
-
Successful Response Body:
+
+
Successful Response Body:
{
     "aggregations": {
         "type": {
@@ -1411,8 +1681,8 @@ 
Successful Response Body: -
Successful response headers
+
+
Successful response headers
@@ -1432,18 +1702,18 @@
Successful response headers

Requesting a specific collection

While other kinds of requests require query parameters, a request for metadata on a specific Commons Works collection can be made by simply adding the community’s slug to the end of the url path. Once again, this will only succeed for collections that are linked to a Commons instance group. Collections that exist independently on Knowledge Commons Works will not be found at the group_collections endpoint and should be requested at the communities endpoint instead.

-
-
Request
+
+
Request
GET https://works.hcommons.org/api/group_collections/my-collection-slug HTTP/1.1
 
-
-
Successful Response Status Code
+
+
Successful Response Status Code

200 OK

-
-
Successful Response Body:
+
+
Successful Response Body:
{
     "id": "5402d72b-b144-4891-aa8e-1038515d68f7",
     "created": "2024-01-01T00:00:00Z",
@@ -1534,8 +1804,8 @@ 

Handling deleted group collections -

Request

+
+

Request

POST https://works.hcommons.org/api/group_collections HTTP/1.1
 
@@ -1558,8 +1828,8 @@

Request

-
-

Request body

+
+

Request body

The request body must be a JSON object with the following fields:

@@ -1594,12 +1864,12 @@

Request body -
-

Successful response status code

+
+

Successful response status code

201 Created

-
-

Successful response body

+
+

Successful response body

-
-

Request body

+
+

Request body

{
     "commons_instance": "knowledgeCommons",
     "old_commons_group_id": "12345",
@@ -1660,12 +1930,12 @@ 

Request body

-
-

Successful response status code

+
+

Successful response status code

200 OK

-
-

Successful response body

+
+

Successful response body

{
     "collection": "my-collection-slug"
     "old_commons_group_id": "12345",
@@ -1674,8 +1944,8 @@ 

Successful response body -

Unsuccessful response codes

+
+

Unsuccessful response codes

  • 400 Bad Request: The request body is missing required fields or contains invalid data.

  • @@ -1701,8 +1971,8 @@

    Deleting a Group’s Collection (DELETE) -

    Request

    +
    +

    Request

    DELETE https://works.hcommons.org/api/group_collections/my-collection-slug?commons_instance=knowledgeCommons&commons_group_id=12345 HTTP/1.1
     
    @@ -1725,12 +1995,12 @@

    Request

-
-

Successful response status code

+
+

Successful response status code

204 No Content

-
-

Unsuccessful response codes

+
+

Unsuccessful response codes

@@ -2039,25 +2321,25 @@

Error responsesHandling group name changes
  • Handling collection name collisions
  • Handling deleted group collections
  • -
  • Request
  • -
  • Request body
  • -
  • Successful response status code
  • -
  • Successful response body
  • +
  • Request
  • +
  • Request body
  • +
  • Successful response status code
  • +
  • Successful response body
  • Unsuccessful response codes
  • Changing the Group Ownership of a Collection (PATCH)
  • Deleting a Group’s Collection (DELETE)
  • @@ -2085,7 +2367,7 @@

    Error responses + diff --git a/docs/build/architecture.html b/docs/build/architecture.html index 347ab7783..29d2f1fa2 100644 --- a/docs/build/architecture.html +++ b/docs/build/architecture.html @@ -3,10 +3,10 @@ - + - KCWorks Architecture - Knowledge Commons Works 0.3.5 documentation + KCWorks Architecture - Knowledge Commons Works 0.3.8 documentation @@ -166,7 +166,7 @@
    @@ -190,7 +190,7 @@

    @@ -688,8 +1007,26 @@

    RDMRecordService Components - - + +
    +
    + Next +
    +
    In-depth Installation Instructions (NEEDS UPDATING)
    +
    + +
    + + +
    +
    + Previous +
    + +
    Developing KCWorks
    + +
    +
    @@ -190,7 +190,7 @@ +
    diff --git a/docs/build/cli_commands.html b/docs/build/cli_commands.html index 6a493fbcc..7dbc7495c 100644 --- a/docs/build/cli_commands.html +++ b/docs/build/cli_commands.html @@ -6,7 +6,7 @@ - CLI Commands - Knowledge Commons Works 0.3.5 documentation + CLI Commands - Knowledge Commons Works 0.3.8 documentation @@ -166,7 +166,7 @@

    +
    +

    Record Permissions

    +
    +

    Per-field editing permissions

    +

    KCWorks adds the ability to set per-field editing permissions for record owners. This is implemented by a custom service component (``kcworks.services.records.components.PerFieldPermissionsComponent`) that runs during record modification and selectively blocks edits to certain fields. Attempts to edit restricted fields will raise a ValidationError with a message indicating that the field is restricted.

    +

    The component runs during the update_draft and publish record operations. It looks at which fields have been modified from the previous version of the record (the draft if the record is not yet published, or the published record if it is published) and checks to see if the current user has permission to edit the field in question. If not, it raises a ValidationError with a message indicating that the field is restricted.

    +
    +

    Per-field permissions configuration

    +

    The permissions are configured in the invenio.cfg file using the RDM_RECORDS_PERMISSIONS_PER_FIELD variable like this:

    +
    RDM_RECORDS_PERMISSIONS_PER_FIELD = {
    +    "default": {
    +        "custom_fields.kcr:commons_domain": "community_moderators",
    +    },
    +    "sample_community": {
    +        "custom_fields.kcr:commons_domain": "community_moderators",
    +    }
    +}
    +
    +
    +

    The default key is used to configure the permissions for all records that do not have a specific community configuration. Other keys are the URL slugs for specific communities and are used to configure the permissions for records in specific communities. These community-specific configurations are optional but take precedence over the default configuration. If no community-specific configuration is found, the default configuration will be used. If no default configuration is found, per-field permissions will only be applied to records published to a community that has a community-specific configuration.

    +

    This configuration would be for a community with the URL slug sample_community. The kcr:commons_domain field is being restricted to moderators for this community.

    +
    +
    +

    Enabling per-field permissions

    +

    In order to enable per-field permissions, the PerFieldPermissionsComponent must be added to the RDM_RECORDS_SERVICE_COMPONENTS config variable.

    +
    RDM_RECORDS_SERVICE_COMPONENTS = [
    +    RDM_RECORDS_SERVICE_COMPONENTS*,
    +    "kcworks.services.records.components.PerFieldPermissionsComponent",
    +]
    +
    +
    +
    +
    +

    Which community’s permissions apply?

    +

    Since KCWorks records can be included in multiple communities, the per-field permissions component needs to know which community’s permissions to apply. There are two controls for this:

    +
      +
    1. The default display community for the record is the one whose permissions are applied. This is the community whose id is stored in parent.communities.default field of the record.

    2. +
    3. The default display community can be set as one of the restricted fields for the record.

    4. +
    +

    So if a record is included in the romantic_literature community, and that community is set as the default community for the record, then the permissions applied will be those of the romantic_literature community. If the romantic_literature community has no per-field permissions configured, then the default permissions will be used. If no default permissions are configured, then the record will be unrestricted.

    +

    If the romantic_literature community’s per-field permissions restrict changing the parent.communities.default field, then the record owner will not be able to remove the record from the romantic_literature community or change the default community for the record. The record can only be removed from the community, or its default community changed to another community, by an owner, manager, or curator of the romantic_literature community.

    +
    +

    [!Note] +If a community has per-field permission restrictions configured, this will be displayed in the user interface when the record owner submits it to the community.

    +
    +
    +

    [!Note] +We should probably add a one-time notification to all record owners if/when the community’s per-field permissions are changed. They should be allowed a grace period to update their records before the permissions are enforced.

    +
    +
    +
    +

    Notifications

    @@ -321,6 +375,23 @@

    User-first-record notifications +

    Notifications for import API record owners

    +

    The streamlined import API sends notifications to the owners of the records being imported. These notifications are implemented by the invenio-record-importer-kcworks package. They are configured using the RECORD_IMPORTER_COMMUNITIES config variable, like this:

    +
    RECORD_IMPORTER_COMMUNITIES = {
    +    "sample_community": {
    +        "email_subject_register": "Your KCWorks Record is Ready",
    +        "email_template_register": "welcome_sample_community",
    +    }
    +}
    +
    +
    +

    This configuration would be for a community with the URL slug sample_community. The email_subject_register value sets the subject line for the email notification sent to the record owners. The email_template_register value sets the template to use for the email notification. The template must be located in the templates/security/email directory of the KCWorks instance directory.

    +
    +

    [!Note] +These notifications will only be sent for records imported using the streamlined import API. They will not be sent for records imported using the old importer API.

    +
    +

    Integrations with KC

    @@ -914,12 +985,22 @@

    invenio-vocabulariesCollections for KC Groups (invenio-group-collections-kcworks) +
  • Record Permissions +
  • Notifications
  • Integrations with KC -

    New changes should be made to the main branch or to a temporary feature or bugfix branch created from the main branch. These temporary branches should be merged back into main as often as possible, and the temporary branches deleted.

    -

    No commits should be made directly to the staging or production branches. All changes should be made to the main branch and then merged into staging and production via pull requests. This is especially important because changes pushed to staging and production branches will be automatically uploaded to the respective servers.

    +
    +

    Daily Development Workflow

    +

    When a developer needs to make changes to the codebase, they should create a new temporary working branch from the main branch. This branch should be named descriptively, such as feature/new-feature or fix/fix-issue. Work in progress should be committed to this working branch until the developer is ready to merge the changes into the main branch.

    +

    Changes should be merged back into main as often as possible, and the temporary branches deleted. These merges should be performed when a developer is ready to deploy the changes to the staging server for testing. This should generally be done after the appropriate tests have been written and are passing. Merges should also represent a single completed change (feature or fix). Developers should, though, think in terms of small, incremental changes and merge often.

    +

    Merging to main should be done via pull request, and the merge only accepted if the newly added tests are present and passing. This ensures that the main branch is always in a deployable state and ready for incoming merges by other developers. Merges should be performed using the squash merge strategy (the equivalent of git merge --squash <branch>). This combines all of the incoming changes into a single commit, making the commit history cleaner and easier to read.

    +

    No commits should be made directly to the staging or production branches. All changes should be made to the main branch and then merged into staging and production via pull requests. This is especially important because changes pushed to staging and production branches will automatically trigger rebuilding of the stanging or production containers and the deployment of the updated containers to the respective servers.

    +
  • Commit strategy

    -

    Wherever possible, a commit should represent a single completed change. We try to avoid wip commits in order to keep the commit history readable.

    -

    In practice, though, we will often need to make incremental commits, particularly on feature and bugfix branches. The practice should be to squash all of the related commits into a single commit before merging the changes into main.

    -
    -
    -

    Naming Commits

    +

    Developers should make frequent commits to their working branch. These may be as small and granular as the developer wishes since many incremental commits allow easy rollback to specific points in the development history. Such commits should be given descriptive names and commit messages that would allow quick identification of the changes. These commits will be squashed into a single commit when merged into main.

    +

    Commits to the main branch should each represent a single completed change (feature or fix). We try to avoid wip commits in order to keep the commit history readable. So all of the changes for a single feature or fix should be squashed into a single commit when merged from a temporary working branch into main.

    +

    Commits to the main branch should be named with the feature or fix prefix and one or more labels for the aspect of the codebase that the changes address. For example, feature(upload-form): add a new upload form or fix(record-page): fix the problem with the record page. In general, maintenance changes should be considered fix commits unless they are part of a larger feature or add new functionality.

    Tagging Releases

    -

    Whenever the KCWorks version number changes, it that commit should be tagged with the new version number. This can be done by running the following command:

    +

    Whenever the KCWorks version number changes, that commit should be tagged with the new version number. This can be done by running the following command:

    git tag -a <version-number> -m "Release <version-number>"
     
    @@ -394,7 +399,7 @@

    Changes to static files

    Changes to python code in the site folder

    -

    Changes to python code in the site folder should (like changes to template files) take effect immediately in the running Knowledge Commons Works instance. You simply need to refresh the page in your browser.

    +

    Changes to python code in the site folder should (like changes to template files) take effect immediately in the running Knowledge Commons Works instance, provided that the build-assets.sh script has been run since the last updated image was built. You simply need to refresh the page in your browser.

    Adding new entry points

    Sometimes you will need to add new entry points to inform the Flask application about additional code you have provided. This is done via the setup.py file in the site folder. Once you have added the entry point declaration, you will need to re-install the kcworks package in the kcworks-ui, kcworks-api, and kcworks-worker container. This can be done by running the following command inside the each container:

    @@ -467,21 +472,24 @@

    Updating an Instance with Upstream Changes -

    Running automated tests (NEEDS UPDATING)

    +
    +

    Running automated tests

    Automated tests (unit tests and integration tests) are run every time a commit is pushed to the knowledge-commons-works Github repo. You can (and should) also run the test suite locally.

    -

    There are currently two distinct sets of tests that have to be run separately: python tests run using invenio’s fixtures, and javascript tests run separately using jest.

    +

    There are currently three distinct sets of tests that have to be run separately: +(a) python tests run using invenio’s fixtures, +(b) javascript tests run separately using jest, +(c) Ghost Inspector tests that run on the deployed site (staging or production).

    Python tests

    -

    The python test suite includes (a) unit tests for back end code, (b) tests of ui views and api requests run with a client fixture, (c) user interaction tests run with selenium webdriver. To run the unit tests and view/request tests, navigate to the root knowledge-commons-works folder and run

    -
    pipenv run pytest
    -
    -
    -

    By default the selenium browser interaction tests are not run. To include these, run pytest with the E2E environment variable set to “yes”:

    -
    pipenv run E2E=yes pytest
    +

    The python test suite includes (a) unit tests for back end code, (b) tests of ui views and api requests run with a client fixture. To run the unit tests and view/request tests, navigate to the root knowledge-commons-works/site folder and run

    +
    bash run_tests.sh
     
    -

    Running the selenium tests also requires that you have the Selenium Client and Chrome Webdriver installed locally.

    +

    Note that you will need to have your local docker service running for these tests to work, since they use the docker-services-cli tool to start the required services.

    +
    +

    [!Note] +Ensure that you have stopped the docker-compose project for your local development instance before running the tests! Otherwise, you will get conflicts with the services that are started by the tests.

    +

    Javascript tests

    @@ -495,6 +503,14 @@

    Javascript tests +

    Ghost Inspector tests

    +

    The Ghost Inspector tests are run on the deployed site (staging or production). They run on a regular schedule and are used to ensure that the site is working as expected.

    +
    +

    [!Note] +At present, Ghost Inspector tests are not run automatically when a pull request is merged into the staging or production branches. This should be implemented in the future once deployment to the respective servers is fully automated.

    +
    +

    @@ -503,12 +519,12 @@

    Javascript tests - +
    Next
    -
    In-depth Installation Instructions (NEEDS UPDATING)
    +
    KCWorks Architecture
    @@ -556,9 +572,11 @@

    Javascript testsDeveloping KCWorks
    • Version Numbering
    • Version Control @@ -582,9 +600,10 @@

      Javascript testsDigging deeper

    • Updating an Instance with Upstream Changes
    • -
    • Running automated tests (NEEDS UPDATING) @@ -598,7 +617,7 @@

      Javascript tests + diff --git a/docs/build/genindex.html b/docs/build/genindex.html index b784280be..a5d86f4d9 100644 --- a/docs/build/genindex.html +++ b/docs/build/genindex.html @@ -4,7 +4,7 @@ - Index - Knowledge Commons Works 0.3.5 documentation + Index - Knowledge Commons Works 0.3.8 documentation @@ -164,7 +164,7 @@ diff --git a/docs/build/in_depth.html b/docs/build/in_depth.html index 7d79621c1..939e47d2e 100644 --- a/docs/build/in_depth.html +++ b/docs/build/in_depth.html @@ -3,10 +3,10 @@ - + - In-depth Installation Instructions (NEEDS UPDATING) - Knowledge Commons Works 0.3.5 documentation + In-depth Installation Instructions (NEEDS UPDATING) - Knowledge Commons Works 0.3.8 documentation @@ -166,7 +166,7 @@
      @@ -190,7 +190,7 @@

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Resource

    Supported Operations

    Requires Authentication

    Endpoint

    InvenioRDM API documentation

    draft works

    read

    yes

    GET /api/records/{id}/draft

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#get-a-draft-record

    create

    yes

    POST /api/records/

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#create-a-draft-record

    update

    yes

    PUT /api/records/{id}

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#update-a-draft-record

    publish

    yes

    POST /api/records/{id}/draft/actions/publish

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#publish-a-draft-record

    delete

    yes

    DELETE /api/records/{id}/draft

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#delete-a-record

    list files

    yes

    GET /api/records/{id}/draft/files

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#list-a-drafts-files

    upload files[1]

    yes

    POST /api/records/{id}/draft/files

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#start-draft-file-uploads

    view file metadata

    yes

    GET /api/records/{id}/draft/files/{filename}

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#get-a-draft-files-metadata

    download file

    yes

    GET /api/records/{id}/draft/files/{filename}/content

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#download-a-draft-file

    delete file

    yes

    DELETE /api/records/{id}/draft/files/{filename}

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#delete-a-draft-file

    published works

    read[2]

    no

    GET /api/records/

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#get-a-record

    read all versions

    no

    GET /api/records/{id}/versions

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#get-all-versions

    read latest version

    no

    GET /api/records/{id}/versions/latest

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#get-latest-version

    search

    no

    GET /api/records/

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#search-records

    update[3]

    yes

    POST /api/records/{id}/draft

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#update-a-draft-record

    create new version

    yes

    POST /api/records/{id}/versions

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#create-a-new-version

    attach files from a previous version[4]

    yes

    POST /api/records/{id}/draft/actions/files-import

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#link-files-from-previous-version

    list files

    no

    GET /api/records/{id}/files

    https://inveniordm.docs.cern.ch/reference/rest_api_drafts_records/#get-all-files

    collections

    Documentation forthcoming

    https://inveniordm.docs.cern.ch/reference/rest_api_communities/

    collection memberships

    Documentation forthcoming

    https://inveniordm.docs.cern.ch/reference/rest_api_members/

    reviews

    Documentation forthcoming

    https://inveniordm.docs.cern.ch/reference/rest_api_reviews/

    requests

    Documentation forthcoming

    https://inveniordm.docs.cern.ch/reference/rest_api_requests/

    users

    Documentation forthcoming

    https://inveniordm.docs.cern.ch/reference/rest_api_users/

    groups[5]

    Documentation forthcoming

    https://inveniordm.docs.cern.ch/reference/rest_api_groups/

    vocabularies

    Documentation forthcoming

    https://inveniordm.docs.cern.ch/reference/rest_api_vocabularies/

    names

    Documentation forthcoming

    https://inveniordm.docs.cern.ch/reference/rest_api_names/

    funders

    Documentation forthcoming

    https://inveniordm.docs.cern.ch/reference/rest_api_funders/

    awards

    Documentation forthcoming

    https://inveniordm.docs.cern.ch/reference/rest_api_awards/

    OAI-PMH sets

    Documentation forthcoming

    https://inveniordm.docs.cern.ch/reference/rest_api_oaipmh_sets/

    statistics

    Documentation forthcoming

    https://inveniordm.docs.cern.ch/reference/rest_api_statistics/

    -
    -

    Note that for some operations where authentication is required, the client must also possess the appropriate permissions. (E.g., to edit a draft work, manage collection requests, etc.)

    -

    Note that several operations are NOT possible via the REST API, including:

    -
      -
    • searching draft records

      -
        -
      • Draft records are by definition not intended to be distributed, and so are not discoverable via the search API until they have been published.

      • -
      -
    • -
    • creating a published work directly

      -
        -
      • Published works can only be created by first creating a draft work and then publishing it.

      • -
      -
    • -
    • deleting a published work

      -
        -
      • Published works are generally considered to be permanent and so cannot be deleted. If desired, access to a published work, or a version of a published work, can be set to “restricted”, in which case the work is no longer discoverable via the search API.

      • -
      -
    • -
    • modifying files for a published work

      -
        -
      • Again, published works are generally considered to be permanent and so their files cannot be modified. The only way to update the files associated with a published work is to create a new version of the work. If desired, access to the original version of the published work can be set to “restricted”, in which case only the new version and its files are discoverable.

      • -
      -
    • -
    • creating or modifying user accounts

      -
        -
      • The REST API endpoint for users is currently read-only. It is not possible to create or modify user accounts, or change and user profile information, via the REST API. These operations are handled via the KCWorks admin interface or via CLI commands.

      • -
      -
    • -
    • creating or modifying groups (permissions)

    • -
    • creating or modifying controlled vocabularies

    • -
    -
    -

    Creating a new Work via the InvenioRDM REST API

    -

    Creating a new Work via the REST API requires several steps.

    -
      -
    • Step 1: Create a draft record

    • -
    • Step 2: Initialize the file upload

    • -
    • Step 3: Upload the file content

      -
        -
      • This step must be repeated for each file being added to the work.

      • -
      -
    • -
    • Step 4: Commit the file upload

    • -
    • Step 5: Publish the draft record

    • -
    -

    If you want the work to be included in a collection at publication time, you must submit a request for the work to be published in the collection. The first four steps are the same as above, but in place of Step 5 (publication), you must submit a request for the work to be published in the collection.

    -
      -
    • Step 5: Create a review request

    • -
    • Step 6: Submit review request

    • -
    -

    If the collection in question requires review before publication, the request will not be published until the review is accepted.

    -
      -
    • Step 7: Accept and publish the record

    • -
    -
    -
    -
    -

    Streamlined Import API

    -

    In order to streamline the process of uploading works to KCWorks, particularly for works intended for publication in a collection, KCWorks provides a streamlined import API. This API allows clients to upload a work and its files in a single step, without the need to create a draft record, initialize file uploads, commit file uploads, or submit a review request.

    -

    Why is this API needed? The InvenioRDM REST API can be fragile and difficult to use, particularly for clients who are not familiar with the system. The creation and acceptance of a review request is redundant where collection administrators are uploading works for a collection they administer. The file upload steps are also not truly stateless, introducing the possibility of a file upload being interrupted and left incomplete, even if the upload of the file’s content was successful.

    -
    -

    Who can use the import API?

    -

    The import API is available to authorized organizations who have obtained an OAuth token for API operations. -The import API is available to authorized organizations who have obtained an OAuth token for API operations.

    -

    The import API places the works directly in a collection, without passing through the review process. So, the user to whom the token is issued must have sufficient permissions to publish directly in the collection. The exact role required depends on the collection’s review policy:

    -
      -
    • If the review policy allows managers and curators to skip the review process, the user of the import API must have one of the roles “manager,” “curator,” or “owner” in the collection.

    • -
    • If the review policy requires all submissions to be reviewed, the user of the import API must have the “owner” role in the collection. -The import API places the works directly in a collection, without passing through the review process. So, the user to whom the token is issued must have sufficient permissions to publish directly in the collection. The exact role required depends on the collection’s review policy:

    • -
    • If the review policy allows managers and curators to skip the review process, the user of the import API must have one of the roles “manager,” “curator,” or “owner” in the collection.

    • -
    • If the review policy requires all submissions to be reviewed, the user of the import API must have the “owner” role in the collection.

    • -
    -
    -
    -

    The import request

    -
    -

    Request

    -
    POST https://works.hcommons.org/api/import/<my-collection-id><my-collection-id> HTTP/1.1
    -POST https://works.hcommons.org/api/import/<my-collection-id> HTTP/1.1
    -
    -
    -
    -
    -

    Required headers

    -
    Content-Type: multipart/form-data
    -Accept: application/json
    -Authorization: Bearer \<your-api-key\>
    -
    -
    -
    -
    -

    Request url path parameters

    -

    Only one URL path parameter is required:

    -
    - - - - - - - - - - - - - - - -

    Name

    Required

    Type

    Description

    collection

    no

    string

    The ID (either the url slug or the UUID) of the collection to which the work should be published. If this value is provided, the work will be submitted to the collection immediately after import. If the collection requires review, and the review_required parameter is set to “true”, the work will be placed in the collection’s review queue.

    -
    -
    -
    -

    Request body

    -

    This request must be made with a multipart/form-data request. The request body must include parts with following names:

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Name

    Required

    Content Type

    Description

    files

    yes

    application/octet-stream

    The (binary) file content to be uploaded. If multiple files are being uploaded, a body part with this same name (“files”) must be provided for each file. If more than three or four files are being uploaded, it is recommended to provide a single zip archive containing all of the files. The files will be assigned to the appropriate work based on filename, so where multiple files are provided these must be unique. If a zip archive is provided, the files must be contained in a single compressed folder with no subfolders.

    metadata

    yes

    application/json

    An array of JSON metadata objects, each of which will be used to create a new work. Each must following the KCWorks implementation of the InvenioRDM metadata schema described here. In addition, an array of owners for the work may optionally be provided by adding a parent.access.owned_by property to each metadata object. Note that if no owners are provided, the work will be created with the organizational account that issued the OAuth token as the owner.

    metadata

    yes

    application/json

    An array of JSON metadata objects, each of which will be used to create a new work. Each must following the KCWorks implementation of the InvenioRDM metadata schema described here. In addition, an array of owners for the work may optionally be provided by adding a parent.access.owned_by property to each metadata object. Note that if no owners are provided, the work will be created with the organizational account that issued the OAuth token as the owner.

    review_required

    no

    text/plain

    A string representation of a boolean (either “true” or “false”) indicating whether the work should be reviewed before publication. This setting is only relevant if the work is intended for publication in a collection that requires review. It will override the collection’s usual review policy, since the work is being uploaded by a collection administrator. (Default: “true”)

    strict_validation

    no

    text/plain

    A string representation of a boolean (either “true” or “false”) indicating whether the import request should be rejected if any validation errors are encountered. If this value is “false”, the imported work will be created in KCWorks even if some of the provided metadata does not conform to the KCWorks metadata schema, provided these are not required fields. If this value is “true”, the import request will be rejected if any validation errors are encountered. (Default: “true”)

    all_or_none

    no

    text/plain

    A string representation of a boolean (either “true” or “false”) indicating whether the entire import request should be rejected if any of the works fail to be created (whether for validation errors, upload errors, or other reasons). If this value is “false”, the import request will be accepted even if some of the works cannot be created. The response in this case will include a list of works that were successfully created and a list of errors for the works that failed to be created. (Default: “true”)

    notify_record_owners

    no

    text/plain

    A string representation of a boolean (either “true” or “false”) indicating whether the owners of the work should be notified by email of the work’s creation. (Default: “true”)

    -
    -
    -
    -

    Identifying the owners of the work

    -

    The array of owners, if provided in a metadata object’s parent.access.owned_by property, must include at least the full name and email address of the users to be added as owners of the work. If the user already has a Knowledge Commons account, their username should also be provided. Additional identifiers (e.g., ORCID) may be provided as well to help avoid duplicate accounts, since a KCWorks account will be created for each user if they do not already have one.

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    key

    required

    type

    description

    full_name

    yes

    string

    The full name of the user.

    email

    yes

    string

    The email address of the user.

    identifiers

    no

    array

    An array of identifiers for the user. Any identifier schemes supported by KCWorks will be accepted. If the user already has a KCWorks account, the kc_username scheme should be used and the user’s username provided as the identifier. If you wish to provide an ORCID, it is recommended to use the orcid scheme. Identifiers for external organizations should be provided using the import_user_id scheme.

    -
    -

    The resulting owners list should be shaped like this:

    -
    [
    -    {
    -        "full_name": "John Doe",
    -        "email": "john.doe@example.com",
    -        "identifiers": [
    -            {
    -                "identifier": "0000-0000-0000-0000",
    -                "scheme": "orcid"
    -            },
    -            {
    -                "identifier": "jdoe",
    -                "scheme": "kc_username"
    -            },
    -            {
    -                "identifier": "1234567890",
    -                "scheme": "import_user_id"
    -            }
    -        ]
    -    }
    -]
    -
    -
    -

    Note that it is not assumed that the creators of a work should be the work’s owners. The creators will only be added as owners if each of them is listed in the access.owned_by property of the work’s metadata object.

    -
    -

    Note, too, that only the first member of the owners array will technically be assigned as the work’s owner in KCWorks. The other owners will be assigned access grants to the work with “manage” permissions.

    -
    -
    -
    -

    KC accounts for work owners

    -

    KCWorks will create an internal KCWorks account for each work owner who does not already have an account on Knowledge Commons. Note that this does not create a full Knowledge Commons account. The owner will still need to visit Knowledge Commons to create an account through the usual registration process. When they do so, their KCWorks account will be linked to their Knowledge Commons account and they will be able to manage and edit their uploaded works.

    -
    -

    It is vital that the owner provide an identifier when they create their Knowledge Commons account that matches an identifier provided for them in the owned_by property of the work’s metadata object. This allows KCWorks to link the owner’s KCWorks account to their Knowledge Commons account after they register. The connecting identifier may be

    -
      -
    • the same primary email address

    • -
    • the same ORCID identifier

    • -
    -
    -

    If an owner does not already belong to the collection to which the records are being imported, that owner will also be added to the collection’s membership with the “reader” role. The allows them access to any records restricted to the collection’s membership, but does not afford them any additional permissions. What it does mean is that collection managers will be able to see all of the work owners in the list of collection members on the collection’s landing page.

    -
    -
    -

    Email notifications for work owners

    -

    When a work is imported into a collection, the work owners will receive an email notification unless the notify_record_owners parameter is set to “false”. This email will include a link to the work’s landing page on KCWorks. The email subject line and the email template used for this notification are configurable on a collection-by-collection basis. Authorized organizations should discuss the desired content with the KCWorks team.

    -

    For KCWorks developers: The configuration for this email is found in the config variable RECORD_IMPORTER_COMMUNITIES in the KCWorks instance’s invenio.cfg file. This is a dictionary whose keys are the collection slugs and whose values are dictionaries with the following keys:

    -
      -
    • email_subject_import: The subject line for the email notification.

    • -
    • email_template_import: The name of the Jinja2 template file to use for the email notification. These templates must be located in the templates/security/email directory. One template file with an .html extension and one with a .txt extension are required, with identical names apart from the extension. The name provided in the email_template_import key should be the filename without the .html or .txt extension.

    • -
    -

    The template will receive the following variables:

    -
      -
    • record: A dictionary containing the metadata for the imported work.

    • -
    • community_page_url: The URL of the collection’s landing page on KCWorks.

    • -
    • kc_registration_link: The URL of the Knowledge Commons registration page.

    • -
    • user: The KCWorks User object for the user being notified.

    • -
    -
    -
    -

    Identifying the work for import

    -

    It is crucial that each work to be imported is assigned a unique identifier. This may be an identifier used internally by the importing organization, it may be a universally unique string such as a UUID, or it may be a universal identifier such as a DOI or a handle. In either case it must be unique across all works to be imported for the collection. This identifier will be used to identify the work in the response, and will be used to identify the work when checking for duplicate imports.

    -

    The identifier may be provided in the metadata object as an identifiers array with the scheme import-recid. E.g.,

    -
    {
    -    "identifiers": [
    -        {
    -            "identifier": "1234567890",
    -            "scheme": "import-recid"
    -        },
    -        // ... other identifiers ...
    -    ]
    -}
    -
    -
    -
    -
    -
    -

    Example import request

    -

    The following example shows a request to import a single work with two files and a single owner.

    -
    -

    Metadata JSON object

    -

    The metadata JSON string for a journal article with a PDF file and a Word file, with a single owner might look like the sample below. Note that the metadata must be provided as an array of metadata objects, even if it contains only a single object.

    -
    [{
    -  "metadata": {
    -    "resource_type": {
    -      "id": "textDocument-journalArticle",
    -    },
    -    "creators": [
    -      {
    -        "person_or_org": {
    -          "type": "personal",
    -          "name": "Fitzpatrick, Kathleen",
    -          "given_name": "Kathleen",
    -          "family_name": "Fitzpatrick",
    -          "identifiers": [ { "identifier": "kfitz", "scheme": "kc_username" } ]
    -        },
    -        "role": { "id": "author" },
    -        "affiliations": [ { "name": "Modern Languages Association" } ]
    -      }
    -    ],
    -    "title": "Giving It Away: Sharing and the Future of Scholarly Communication",
    -    "publisher": "University of Toronto Press Inc. (UTPress)",
    -    "publication_date": "2012",
    -    "languages": [ { "id": "eng" } ],
    -    "identifiers": [
    -      { "identifier": "1234567890", "scheme": "import-recid" },
    -      { "identifier": "10.3138/jsp.43.4.347", "scheme": "doi" },
    -      { "identifier": "1710-1166", "scheme": "issn" },
    -    ],
    -    "rights": [
    -      {
    -        "id": "cc-by-4.0",
    -        "title": {
    -          "en": "Creative Commons Attribution 4.0 International"
    -        },
    -      }
    -    ],
    -    "description": "Open access has great potential to transform the future of scholarly communication, but its success will require a focus on values -- and particularly generosity -- rather than on costs."
    -  },
    -  "custom_fields": {
    -    "journal:journal": {
    -      "title": "Journal of Scholarly Publishing",
    -      "issue": "4",
    -      "volume": "43",
    -      "pages": "347-362",
    -      "issn": "1198-9742"
    -    },
    -    "kcr:user_defined_tags": [
    -      "open access",
    -      "Scholarly communication"
    -    ],
    -  },
    -  "parent": {
    -    "owned_by": [
    -      {
    -        "full_name": "Kathleen Fitzpatrick",
    -        "email": "kfitz@msu.edu",
    -        "identifiers": [ { "identifier": "kfitz", "scheme": "kc_username" } ]
    -      }
    -    ]
    -  },
    -  "files": {
    -    "enabled": true,
    -    "entries": {
    -      "fitzpatrick-givingitaway.docx": {
    -        "size": 149619,
    -        "key": "fitzpatrick-givingitaway.docx",
    -      },
    -      "fitzpatrick-givingitaway.pdf": {
    -        "size": 234567,
    -        "key": "fitzpatrick-givingitaway.pdf",
    -      }
    -    }
    -  },
    -}]
    -
    -
    -
    -
    -

    Request

    -

    To submit the article to be included in the my-organization collection, one might use a command line tool like curl, with the following command.

    -
    curl -X POST https://works.hcommons.org/api/import/my-collection-id \
    -  -H "Content-Type: multipart/form-data" \
    -  -H "Accept: application/json" \
    -  -H "Authorization: Bearer <your-api-key>" \
    -  -F "files=@path/to/files/fitzpatrick-givingitaway.pdf" \
    -  -F "files=@path/to/files/fitzpatrick-givingitaway.docx" \
    -  -F "metadata={// ... metadata JSON object goes here as a string ... //}"
    -
    -
    -

    Of course, in most cases the request will be made programmatically, not via a command line tool. The syntax for the request will vary depending on the programming language and tools being used.

    -
    -
    -
    -

    A successful import response

    -
    HTTP/1.1 201 Created
    -Content-Type: application/json
    -
    -
    -

    This response will include a JSON object with the following fields:

    -
      -
    • status: The status of the import request, which will be “success” if the import request was successful.

    • -
    • data: An array of JSON objects, one for each record that was created in the operation

    • -
    • errors: An array of JSON objects, one for each record that failed to be created. (In a successful import, this array will be empty.)

    • -
    • message: A message describing the import request. (In a successful import, this will be “All records were successfully imported”.)

    • -
    -

    Each object in the data array will have the following fields:

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    key

    type

    description

    item_index

    integer

    The index of the record in the import request. (Starting with 0 for the first record.)

    record_id

    string

    The internal KCWorks ID of the new work.

    source_id

    string

    The external identifier for the work that was provided in the import request using the import-recid scheme.

    record_url

    string

    The URL of the new work. This is the URL of the work’s landing page on KCWorks. Other URLs for the work, including the endpoints for API operations, are available in the links property of the record’s metadata object.

    files

    object

    An object whose keys are the filenames for the files that were successfully uploaded and whose values are 2 member arrays. The first member is a string representing the status of the file upload operation. The second member is an array of string error messages if any errors occurred during the upload. Further details about the files, including their size and checksum, are available in the files property of the metadata object.

    collection_id

    string

    The ID of the collection to which the work was published, if any. This is provided for convenience. Details about the collection are available in the parent.communities property of the metadata object.

    errors

    array

    A list of objects, each of which describes an error that occurred during the import process. These might include validation errors for certain fields in the provided metadata that did not prevent creation of the work.

    metadata

    object

    The metadata for the created work, in JSON format, following the KCWorks implementation of the InvenioRDM metadata schema described here. The returned metadata will include internal KCWorks system fields such as created, updated, revision_id, id, etc. It is identical to the metadata that would be returned by a GET request to the records API endpoint on KCWorks.

    -
    -

    The response object will be shaped like this:

    -
    {
    -    "status": "success",
    -    "data": [
    -        {
    -            "item_index": 0,
    -            "record_id": "1234567890",
    -            "record_url": "https://works.hcommons.org/records/1234567890",
    -            "files": {
    -                "file1.pdf": ["success", []],
    -                "file2.pdf": ["success", []]
    -            },
    -            "collection_id": "1234567890",
    -            "errors": [],
    -            "metadata": {
    -                /* ... */
    -            }
    -        },
    -        {
    -            "item_index": 1,
    -            "record_id": "1234567891",
    -            "record_url": "https://works.hcommons.org/records/1234567891",
    -            "files": {
    -                "file1.pdf": ["success", []],
    -                "file2.pdf": ["success", []]
    -            },
    -            "collection_id": "1234567890",
    -            "errors": [],
    -            "metadata": {
    -                /* ... */
    -            }
    -        }
    -    ],
    -    "errors": [],
    -    "message": "All records were successfully imported."
    -}
    -
    -
    -
    -
    -

    An unsuccessful import response

    -
    -

    The token does not have the necessary permissions

    -
    HTTP/1.1 403 Forbidden
    -Content-Type: application/json
    -
    -
    -

    This response will include a JSON object with the following fields:

    -
    {
    -    "status": "error",
    -    "message": "The user does not have the necessary permissions."
    -}
    -
    -
    -
    -
    -

    The request metadata is malformed or invalid

    -
    HTTP/1.1 400 Bad Request
    -Content-Type: application/json
    -
    -
    -

    This response is returned when some of the provided metadata for all of the works to be imported is malformed or invalid. This indicates that none of the works has been created and a new request must be made with corrected metadata. This response will only be received if either -a. the strict_validation request parameter was set to “true” and all of the supplied metadata objects raise validation errors, or -b. the strict_validation parameter is set to “false”, but the validation errors affected fields that are required for the works to be created. -c. the all_or_none request parameter is set to “true” and some of the supplied metadata objects raise validation errors.

    -

    The response will include a JSON object with the same shape as the successful response, but with the following differences:

    -
      -
    • The status field will be “error”.

    • -
    • The data field will be an empty array.

    • -
    • The errors field will be an array of objects, each of which describes a work that failed to be created. In each object the record_id and record_url fields will be null, since the work was not created. The errors field will be an array of objects, each of which describes an error that occurred during the attempt to create the work. The metadata field will still contain the metadata that was provided in the request for reference.

    • -
    -
    {
    -    "status": "error",
    -    "message": (
    -        "No records were successfully imported. Please check the list of failed records "
    -        "in the 'errors' field for more information. Each failed item should have its own "
    -        "list of specific errors."
    -    ),
    -    "data": [],
    -    "errors": [
    -        {
    -            "item_index": 0,
    -            "record_id": null,
    -            "record_url": null,
    -            "errors": [
    -                {
    -                    "field": "title",
    -                    "message": "Required field missing."
    -                }
    -            ],
    -            "files": {},
    -            "collection_id": "1234567890",
    -            "metadata": {
    -                /* ... */
    -            }
    -        },
    -        {
    -            "item_index": 1,
    -            "record_id": null,
    -            "record_url": null,
    -            "errors": [
    -                {
    -                    "field": "metadata.creators.0.occupation",
    -                    "message": "Unknown field."
    -                },
    -                {
    -                    "field": "metadata.publication_date",
    -                    "message": "Date is not in Extended Date Time Format (EDTF)."
    -                }
    -            ],
    -            "files": {},
    -            "collection_id": "1234567890",
    -            "metadata": {
    -                /* ... */
    -            }
    -        }
    -    ]
    -}
    -
    -
    -
    -
    -
    -

    A partially successful import response

    -
    -

    NOT YET IMPLEMENTED. At present the all_or_none request parameter will always be “true”.

    -
    -

    If only some of the works to be imported are malformed or invalid, and the all_or_none request parameter is set to “false”, the response will be 207 Multi-Status. In this case the response will be shaped much like the successful and unsuccessful responses described above, but there will be items in both the data and errors arrays. The items in the data array will be works that were successfully created, and the items in the errors array will be works that failed to be created.

    -

    The response will be shaped like this:

    -
    {
    -    "status": "multi_status",
    -    "message": (
    -        "Some records were successfully imported, but some failed. Please check the "
    -        "list of failed records in the 'errors' field for more information. Each failed "
    -        "item should have its own list of specific errors."
    -    ),
    -    "data": [
    -        {
    -            "item_index": 1,
    -            "record_id": "1234567891",
    -            "source_id": "xxx1234567891",
    -            "record_url": "https://works.hcommons.org/records/1234567891",
    -            "files": {
    -                "file1.pdf": ["success", []],
    -                "file2.pdf": ["success", []]
    -            },
    -            "collection_id": "1234567890",
    -            "errors": [],
    -            "metadata": {
    -                /* ... */
    -            }
    -        }
    -    ],
    -    "errors": [
    -        {
    -            "item_index": 0,
    -            "record_id": null,
    -            "source_id": "xxx1234567890",
    -            "record_url": null,
    -            "errors": [
    -                {
    -                    "field": "title",
    -                    "message": "Required field missing."
    -                }
    -            ],
    -            "files": {},
    -            "collection_id": "1234567890",
    -            "metadata": {
    -                /* ... */
    -            }
    -        },
    -    ]
    -}
    -
    -
    -
    -

    The request file upload failed

    -
    HTTP/1.1 400 Bad Request
    -Content-Type: application/json
    -
    -
    -

    If the file content is uploaded but for some reason is considered corrupted or invalid, a 400 Bad Request response will be returned. This response will include a JSON object with the following fields:

    -
    {
    -    "status": "error",
    -    "message": (
    -        "No records were successfully imported. Please check the list of failed records "
    -        "in the 'errors' field for more information. Each failed item should have its own "
    -        "list of specific errors."
    -    ),
    -    "data": [],
    -    "errors": [
    -        {
    -            "item_index": 0,
    -            "record_id": null,
    -            "source_id": "xxx1234567890",
    -            "record_url": null,
    -            "errors": [
    -                {
    -                    "validation_error": {
    -                        "metadata": {"title": ["Missing data for required field."]}
    -                    }
    -                }
    -            ],
    -            "files": {
    -                "file1.pdf": ["uploaded", []]
    -            },
    -            "collection_id": "1234567890",
    -            "metadata": {
    -                /* ... */
    -            }
    -        },
    -        {
    -            "item_index": 1,
    -            "record_id": null,
    -            "source_id": "xxx1234567891",
    -            "record_url": null,
    -            "errors": [
    -                {
    -                    "validation_error": {
    -                        "metadata": {"creators" {"occupation": ["Unknown field."]}}
    -                    }
    -                },
    -                {
    -                    "validation_error": {
    -                        "metadata": {"publication_date": ["Date is not in Extended Date Time Format (EDTF)."]}
    -                    }
    -                },
    -                {
    -                    "file upload failures": {
    -                        "sample.pdf": [
    -                            "failed",
    -                            ["File sample.pdf not found in list of files."],
    -                        ]
    -                    },
    -                },
    -            ],
    -            "files": {
    -                "sample.pdf": ["failed", ["File sample.pdf not found in list of files."]],
    -            },
    -            "collection_id": "1234567890",
    -            "metadata": {
    -                /* ... */
    -            }
    -        }
    -    ]
    -}
    -
    -
    -

    If an upload simply fails to complete and times out, the client will instead receive a 504 Gateway Timeout response.

    -
    -
    -
    -

    What happens to an import request that fails?

    -

    If all steps of an import request do not complete successfully, the work will not be created. The files that were successfully uploaded will be deleted, and any draft record created as part of the import request will be deleted. The client may attempt the import request again.

    -
    -
    -

    Making duplicate import requests

    -

    Note that it is possible to make duplicate import requests unless the work to be imported includes a pre-existing DOI identifier or some other unique identifier that has already been registered in KCWorks. In this case, the import request will be rejected with a 409 Conflict response code and a Location header pointing to the existing work.

    -

    In the absence of such a unique identifier, however, KCWorks will not try to detect duplicate works based on the metadata, file name, or file content. If the same work is imported multiple times without a pre-existing unique identifier, it will be created multiple times in KCWorks and each version will be assigned a newly minted DOI.

    -
    -
    -
    -

    Group Collections API

    -
    https://works.hcommons.org/api/group_collections
    -
    -
    -

    The group_collections REST API endpoint allows a client to create, read, modify, or delete a collection in KCWorks owned and administered by a Knowledge Commons group. GET requests to retrieve information about group collections are open to all clients. POST, PUT, and DELETE requests are secured by an oauth token that must be obtained from the Knowledge Commons Works administrator.

    -

    This endpoint is not configured to receive all of the metadata required to create or modify group collections. Rather, the group_collections endpoint receives minimal signals from a Commons Instance and then obtains the full required metadata via an API callback to the Commons instance.

    -
    -

    [!NOTE] -KCWorks uses the term “collection” in place of the default term “community” employed in other InvenioRDM installations. This is partly to accommodate exactly the integration with Knowledge Commons groups that is discussed here.

    -
    -
    -

    Group collection owner

    -

    InvenioRDM does not allow groups to be owners of a collection (community). When a collection is created for a group, though, we do not know which of the group’s administrators to assign as the individual owner. It is also awkward to change ownership of a collection later on if the group’s administrativer personnel change. So the collection is owned by an administrative user who is assigned the role group-collections-owner. The group’s administrators are then assigned privileges as “managers” of the group collection. This allows them to manage the collection’s settings and membership, but not to delete the collection or change its ownership.

    -

    Before the invenio_group_collections_kcworks module can be used, the administrator must create a role called group-collections-owner and assign membership in that role to one administrative user account. If multiple user accounts belong to that role, the first user account in the list will be assigned as the owner of group collections. If no user accounts belong to the role, the group collection creation will fail with a NoOwnerAvailable error.

    -
    -
    -

    Endpoint configuration

    -

    The configuration variable GROUP_COLLECTIONS_METADATA_ENDPOINTS must be provided in the invenio.cfg file in order to use this endpoint. This variable should hold a dictionary whose keys are Commons instance names. The value for each key is a dictionary containing the following keys:

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -

    key

    value type

    required

    value

    url

    str

    Y

    The url on the Commons instance where a GET request can retrieve the metadata for a group. The url should include the placeholder {id} where the Commons instance id for the requested group should be placed.

    token_name

    str (upper case)

    Y

    The name of the environment variable that will hold the authentication token for requests to the Commons instance url for retrieving group metadata.

    placeholder_avatar

    str

    N

    The filename or last url component that identifies a placeholder avatar in the avatar image url supplied for the Commons group avatar.

    -
    -

    A typical configuration might look like the following:

    -
    GROUP_COLLECTIONS_METADATA_ENDPOINTS = {
    -    "knowledgeCommons": {
    -            "url": "https://hcommons-dev.org/wp-json/commons/v1/groups/{id}",
    -            "token_name": "COMMONS_API_TOKEN",
    -            "placeholder_avatar": "mystery-group.png",
    -    },
    -}
    -
    -
    -
    -
    -

    Retrieving Group Collection Metadata (GET)

    -

    A GET request to this endpoint will retrieve metadata on Invenio collections -that are owned by a Commons group. A request to the bare endpoint without a -group ID or collection slug will return a list of all collections owned by -all Commons groups. (Commons Works collections not linked to a Commons group will not be included. If you wish to query all groups, please use the communities API endpoint.)

    -
    -

    Query parameters

    -

    Four optional query parameters can be used to filter the results:

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Parameter name

    Description

    commons_instance

    the name of the Commons instance to which the group belongs. If this parameter is provided, the response will only include collections owned by groups in that instance.

    commons_group_id

    the ID of the Commons group. If this parameter is provided, the response will only include collections owned by that group.

    collection

    the slug of the collection. If this parameter is provided, the response will include only metadata for that collection.

    page

    the page number of the results

    size

    the number of results to include on each page

    sort

    the kind of sorting applied to the returned results

    -
    -
    -
    -

    Sorting

    -

    The sort parameter can be set to one of the following sort types:

    -
    - - - - - - - - - - - - - - - - - - - - -

    Field name

    Description

    newest

    Descending order based on created date

    oldest

    Ascending order based on created date

    updated-desc

    Descending order based on updated date

    updated-asc

    Ascending order based on updated date

    -
    -

    By default the results are sorted by updated-desc

    -
    -
    -

    Pagination

    -

    Long result sets will be paginated. The response will include urls for the first, last, previous, and next pages of results in the link property of the response body. A url for the current page of results will also be included in the list as a self link. By default the page size is 25, but this can be changed by providing a value for the size query parameter.

    -
    -
    -

    Requesting all collections

    -
    -
    Request
    -
    GET https://works.hcommons.org/api/group_collections HTTP/1.1
    -
    -
    -
    -
    -
    Successful Response Status Code
    -

    200 OK

    -
    -
    -
    Successful response body
    -
    {
    -    "aggregations": {
    -        "type": {
    -            "buckets": [
    -                {
    -                    "doc_count": 50,
    -                    "is_selected": false,
    -                    "key": "event",
    -                    "label": "Event",
    -                },
    -                {
    -                    "doc_count": 50,
    -                    "is_selected": false,
    -                    "key": "organization",
    -                    "label": "Organization",
    -                },
    -            ],
    -            "label": "Type",
    -        },
    -        "visibility": {
    -            "buckets": [
    -                {
    -                    "doc_count": 100,
    -                    "is_selected": false,
    -                    "key": "public",
    -                    "label": "Public",
    -                }
    -            ],
    -            "label": "Visibility",
    -        },
    -    },
    -    "hits": {
    -        "hits": [
    -            {
    -                "id": "5402d72b-b144-4891-aa8e-1038515d68f7",
    -                "access": {
    -                    "member_policy": "open",
    -                    "record_policy": "open",
    -                    "review_policy": "closed",
    -                    "visibility": "public",
    -                },
    -                "children": {"allow": false},
    -                "created": "2024-01-01T00:00:00Z",
    -                "updated": "2024-01-01T00:00:00Z",
    -                "links": {
    -                    "self": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7",
    -                    "self_html": "https://works.hcommons.org/communities/panda-group-collection",
    -                    "settings_html": "https://works.hcommons.org/communities/panda-group-collection/settings",
    -                    "logo": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/logo",
    -                    "rename": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/rename",
    -                    "members": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/members",
    -                    "public_members": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/members/public",
    -                    "invitations": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/invitations",
    -                    "requests": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/requests",
    -                    "records": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/records",
    -                    "featured": "https://works.hcommons.org/api/"
    -                                "communities/"
    -                                "5402d72b-b144-4891-aa8e-1038515d68f7/"
    -                                "featured",
    -                },
    -                "revision_id": 1,
    -                "slug": "panda-group-collection",
    -                "metadata": {
    -                    "title": "The Panda Group Collection",
    -                    "curation_policy": "Curation policy",
    -                    "page": "Information for the panda group collection",
    -                    "description": "This is a collection about pandas.",
    -                    "website": "https://works.hcommons.org/pandas",
    -                    "organizations": [
    -                        {
    -                            "name": "Panda Research Institute",
    -                        }
    -                    ],
    -                    "size": 100,
    -                },
    -                "deletion_status": {
    -                    "is_deleted": false,
    -                    "status": "P",
    -                },
    -                "custom_fields": {
    -                    "kcr:commons_instance": "knowledgeCommons",
    -                    "kcr:commons_group_description": "This is a group for panda research.",
    -                    "kcr:commons_group_id": "12345",
    -                    "kcr:commons_group_name": "Panda Research Group",
    -                    "kcr:commons_group_visibility": "public",
    -                },
    -                "access": {
    -                    "visibility": "public",
    -                    "member_policy": "closed",
    -                    "record_policy": "open",
    -                    "review_policy": "open",
    -                }
    -            },
    -            /* ... */
    -        ],
    -        "total": 100,
    -    },
    -    "links": {
    -        "self": "https://works.hcommons.org/api/group_collections",
    -        "first": "https://works.hcommons.org/api/group_collections?page=1",
    -        "last": "https://works.hcommons.org/api/group_collections?page=10",
    -        "prev": "https://works.hcommons.org/api/group_collections?page=1",
    -        "next": "https://works.hcommons.org/api/group_collections?page=2",
    -    }
    -    "sortBy": "newest",
    -    "order": "ascending",
    -}
    -
    -
    -
    -
    -
    Successful Response Headers
    -
    - - - - - - - - - - - -

    Header name

    Header value

    Content-Type

    application/json

    -
    -
    -
    -
    -

    Requesting collections for a Commons instance

    -
    -
    Request
    -
    GET https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons&sort=updated-asc HTTP/1.1
    -
    -
    -
    -
    -
    Successful response status code
    -

    200 OK

    -
    -
    -
    Successful Response Body:
    -
    {
    -    "aggregations": {
    -        "type": {
    -            "buckets": [
    -                {
    -                    "doc_count": 45,
    -                    "is_selected": false,
    -                    "key": "event",
    -                    "label": "Event",
    -                },
    -                {
    -                    "doc_count": 45,
    -                    "is_selected": false,
    -                    "key": "organization",
    -                    "label": "Organization",
    -                },
    -            ],
    -            "label": "Type",
    -        },
    -        "visibility": {
    -            "buckets": [
    -                {
    -                    "doc_count": 90,
    -                    "is_selected": false,
    -                    "key": "public",
    -                    "label": "Public",
    -                }
    -            ],
    -            "label": "Visibility",
    -        },
    -    },
    -    "hits": {
    -        "hits": [
    -            {
    -                "id": "5402d72b-b144-4891-aa8e-1038515d68f7",
    -                "access": {
    -                    "member_policy": "open",
    -                    "record_policy": "open",
    -                    "review_policy": "closed",
    -                    "visibility": "public",
    -                },
    -                "children": {"allow": false},
    -                "created": "2024-01-01T00:00:00Z",
    -                "updated": "2024-01-01T00:00:00Z",
    -                "links": {
    -                    "self": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7",
    -                    "self_html": "https://works.hcommons.org/communities/panda-group-collection",
    -                    "settings_html": "https://works.hcommons.org/communities/panda-group-collection/settings",
    -                    "logo": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/logo",
    -                    "rename": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/rename",
    -                    "members": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/members",
    -                    "public_members": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/members/public",
    -                    "invitations": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/invitations",
    -                    "requests": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/requests",
    -                    "records": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/records",
    -                    "featured": "https://works.hcommons.org/api/"
    -                                "communities/"
    -                                "5402d72b-b144-4891-aa8e-1038515d68f7/"
    -                                "featured",
    -                },
    -                "revision_id": 1,
    -                "slug": "panda-group-collection",
    -                "metadata": {
    -                    "title": "The Panda Group Collection",
    -                    "curation_policy": "Curation policy",
    -                    "page": "Information for the panda group collection",
    -                    "description": "This is a collection about pandas.",
    -                    "website": "https://works.hcommons.org/pandas",
    -                    "organizations": [
    -                        {
    -                            "name": "Panda Research Institute",
    -                        }
    -                    ],
    -                    "size": 100,
    -                },
    -                "deletion_status": {
    -                    "is_deleted": false,
    -                    "status": "P",
    -                },
    -                "custom_fields": {
    -                    "kcr:commons_instance": "knowledgeCommons",
    -                    "kcr:commons_group_description": "This is a group for panda research.",
    -                    "kcr:commons_group_id": "12345",
    -                    "kcr:commons_group_name": "Panda Research Group",
    -                    "kcr:commons_group_visibility": "public",
    -                },
    -                "access": {
    -                    "visibility": "public",
    -                    "member_policy": "closed",
    -                    "record_policy": "open",
    -                    "review_policy": "open",
    -                }
    -            },
    -            /* ... */
    -        ],
    -        "total": 90,
    -    },
    -    "links": {
    -        "self": "https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons",
    -        "first": "https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons&page=1",
    -        "last": "https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons&page=9",
    -        "prev": "https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons&page=1",
    -        "next": "https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons&page=2",
    -    }
    -    "sortBy": "updated-asc",
    -}
    -
    -
    -
    -
    -
    Successful response headers
    -
    - - - - - - - - - - - - - - -

    Header name

    Header value

    Content-Type

    application/json

    Link

    <https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons&page=1>; rel="first", <https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons&page=9>; rel="last", <https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons&page=1>; rel="prev", <https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons&page=2>; rel="next"

    -
    -
    -
    -
    -

    Requesting collections for a specific group

    -

    Note that if you specify a commons_group_id value, you must also provide a commons_instance value. This is to avoid confusion if different Commons instances use the same internal id for groups.

    -
    -
    Request
    -
    GET https://works.hcommons.org/api/group_collections?commons_instance=knowledgeCommons&commons_group_id=12345 HTTP/1.1
    -
    -
    -
    -
    -
    Successful response status code
    -

    200 OK

    -
    -
    -
    Successful Response Body:
    -
    {
    -    "aggregations": {
    -        "type": {
    -            "buckets": [
    -                {
    -                    "doc_count": 2,
    -                    "is_selected": false,
    -                    "key": "event",
    -                    "label": "Event",
    -                },
    -                {
    -                    "doc_count": 2,
    -                    "is_selected": false,
    -                    "key": "organization",
    -                    "label": "Organization",
    -                },
    -            ],
    -            "label": "Type",
    -        },
    -        "visibility": {
    -            "buckets": [
    -                {
    -                    "doc_count": 4,
    -                    "is_selected": false,
    -                    "key": "public",
    -                    "label": "Public",
    -                }
    -            ],
    -            "label": "Visibility",
    -        },
    -    },
    -    "hits": {
    -        "hits": [
    -            {
    -                "id": "5402d72b-b144-4891-aa8e-1038515d68f7",
    -                "access": {
    -                    "member_policy": "open",
    -                    "record_policy": "open",
    -                    "review_policy": "closed",
    -                    "visibility": "public",
    -                },
    -                "children": {"allow": false},
    -                "created": "2024-01-01T00:00:00Z",
    -                "updated": "2024-01-01T00:00:00Z",
    -                "links": {
    -                    "self": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7",
    -                    "self_html": "https://works.hcommons.org/communities/panda-group-collection",
    -                    "settings_html": "https://works.hcommons.org/communities/panda-group-collection/settings",
    -                    "logo": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/logo",
    -                    "rename": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/rename",
    -                    "members": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/members",
    -                    "public_members": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/members/public",
    -                    "invitations": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/invitations",
    -                    "requests": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/requests",
    -                    "records": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/records",
    -                    "featured": "https://works.hcommons.org/api/"
    -                                "communities/"
    -                                "5402d72b-b144-4891-aa8e-1038515d68f7/"
    -                                "featured",
    -                },
    -                "revision_id": 1,
    -                "slug": "panda-group-collection",
    -                "metadata": {
    -                    "title": "The Panda Group Collection",
    -                    "curation_policy": "Curation policy",
    -                    "page": "Information for the panda group collection",
    -                    "description": "This is a collection about pandas.",
    -                    "website": "https://works.hcommons.org/pandas",
    -                    "organizations": [
    -                        {
    -                            "name": "Panda Research Institute",
    -                        }
    -                    ],
    -                    "size": 2,
    -                },
    -                "deletion_status": {
    -                    "is_deleted": false,
    -                    "status": "P",
    -                },
    -                "custom_fields": {
    -                    "kcr:commons_instance": "knowledgeCommons",
    -                    "kcr:commons_group_description": "This is a group for panda research.",
    -                    "kcr:commons_group_id": "12345",
    -                    "kcr:commons_group_name": "Panda Research Group",
    -                    "kcr:commons_group_visibility": "public",
    -                },
    -                "access": {
    -                    "visibility": "public",
    -                    "member_policy": "closed",
    -                    "record_policy": "open",
    -                    "review_policy": "open",
    -                }
    -            },
    -            /* ... */
    -        ],
    -        "total": 4,
    -    },
    -    "links": {
    -        "self": "https://works.hcommons.org/api/group_collections",
    -        "first": "https://works.hcommons.org/api/group_collections?page=1",
    -        "last": "https://works.hcommons.org/api/group_collections?page=1",
    -        "prev": "https://works.hcommons.org/api/group_collections?page=1",
    -        "next": "https://works.hcommons.org/api/group_collections?page=1",
    -    }
    -    "sortBy": "newest",
    -}
    -
    -
    -
    -
    -
    Successful response headers
    -
    - - - - - - - - - - - -

    Header name

    Header value

    Content-Type

    application/json

    -
    -
    -
    -
    -

    Requesting a specific collection

    -

    While other kinds of requests require query parameters, a request for metadata on a specific Commons Works collection can be made by simply adding the community’s slug to the end of the url path. Once again, this will only succeed for collections that are linked to a Commons instance group. Collections that exist independently on Knowledge Commons Works will not be found at the group_collections endpoint and should be requested at the communities endpoint instead.

    -
    -
    Request
    -
    GET https://works.hcommons.org/api/group_collections/my-collection-slug HTTP/1.1
    -
    -
    -
    -
    -
    Successful Response Status Code
    -

    200 OK

    -
    -
    -
    Successful Response Body:
    -
    {
    -    "id": "5402d72b-b144-4891-aa8e-1038515d68f7",
    -    "created": "2024-01-01T00:00:00Z",
    -    "updated": "2024-01-01T00:00:00Z",
    -    "links": {
    -        "self": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7",
    -        "self_html": "https://works.hcommons.org/communities/panda-group-collection",
    -        "settings_html": "https://works.hcommons.org/communities/panda-group-collection/settings",
    -        "logo": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/logo",
    -        "rename": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/rename",
    -        "members": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/members",
    -        "public_members": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/members/public",
    -        "invitations": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/invitations",
    -        "requests": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/requests",
    -        "records": "https://works.hcommons.org/api/communities/5402d72b-b144-4891-aa8e-1038515d68f7/records",
    -        "featured": "https://works.hcommons.org/api/"
    -                    "communities/"
    -                    "5402d72b-b144-4891-aa8e-1038515d68f7/"
    -                    "featured",
    -    },
    -    "revision_id": 1,
    -    "slug": "panda-group-collection",
    -    "metadata": {
    -        "title": "The Panda Group Collection",
    -        "curation_policy": "Curation policy",
    -        "page": "Information for the panda group collection",
    -        "description": "This is a collection about pandas.",
    -        "website": "https://works.hcommons.org/pandas",
    -        "organizations": [
    -            {
    -                "name": "Panda Research Institute",
    -            }
    -        ],
    -        "size": 100,
    -    },
    -    "deletion_status": {
    -        "is_deleted": false,
    -        "status": "P",
    -    },
    -    "custom_fields": {
    -        "kcr:commons_instance": "knowledgeCommons",
    -        "kcr:commons_group_description": "This is a group for pandas research.",
    -        "kcr:commons_group_id": "12345",
    -        "kcr:commons_group_name": "Panda Research Group",
    -        "kcr:commons_group_visibility": "public",
    -    },
    -    "access": {
    -        "visibility": "public",
    -        "member_policy": "closed",
    -        "record_policy": "open",
    -        "review_policy": "open",
    -    }
    -}
    -
    -
    -
    -
    -
    -
    -

    Creating a Collection for a Group (POST)

    -

    A POST request to this endpoint creates a new collection in Invenio owned by the specified Commons group. If the collection is successfully created, the response status code will be 201 Created, and the response body will be a JSON object containing the URL slug for the newly created collection.

    -

    The POST request will trigger a callback to the Commons instance to get the metadata for the specified group, using the configuration dictionary declared in the GROUP_COLLECTIONS_METADATA_ENDPOINTS config variable, under the key matching the Commons instance’s SAML IDP provider name (declared in the SSO_SAML_IDPS config variable). This callback request will be sent to the “url” specified in the configuration dictionary (e.g., GROUP_COLLECTIONS_METADATA_ENDPOINTS["knowledgeCommons"]["url"]). This request will be authenticated using the environment variable whose name matches the token_name from the same configuration dictionary. The metadata from this callback request will then be used to populate the collection metadata in Invenio.

    -

    If the metadata returned from the Commons instance includes a url for an avatar, that avatar will be downloaded and stored in the Invenio instance’s file storage. Since we do not want to use a placeholder avatar for the group, the instance’s configuration can include a placeholder_avatar key. If the file name or last segment of the supplied avatar url matches this placeholder_avatar value, it will be ignored.

    -
    -

    Permissions and access in newly created collections

    -

    By default, the newly created collection will have the following access settings:

    -
      -
    • Visibility: “public”

    • -
    • Member visibility: “public”

    • -
    • Member policy: “closed”

    • -
    • Record policy: “closed”

    • -
    • Review policy: “closed”

    • -
    -

    They will appear in search results and be visible to non-members of the collection. But users who are not group members will not be able to request membership, and all submissions to the group will be held for review by the collection curators.

    -

    The collection’s administrators can change these settings in the collection’s settings page.

    -
    -
    -

    Handling group name changes

    -

    Note that when a collection is created for a group, the collection’s slug will be generated from the group’s name. If the group’s name is changed in the Commons instance, the collection’s slug will not be automatically updated. This is to avoid breaking links to the collection. If the group’s name is changed, the collection’s slug will remain the same, but the collection’s metadata will be updated to reflect the new group name.

    -
    -
    -

    Handling collection name collisions

    -

    It is possible for two groups on Commons instances to share the same human readable name, even though their ids are different. Knowledge Commons Works will allow multiple collections to share identical human readable names, but group url slugs must be unique across all KC Works collections. So where group names collide, only the first of the identically-named collections will have its slug generated normally. Susequent collections with the same name will have a numerical disambiguator appended to the end of their slugs. So if we have three groups named “Panda Studies,” the first collection created for one of the groups will have the slug panda-studies. The other collections created by these groups will be assigned the slugs panda-studies-1 and panda-studies-2, in order of their creation in Knowledge Commons Works.

    -
    -
    -

    Handling deleted group collections

    -

    If a group collection is deleted, its slug will be reserved in the Invenio PID store and cannot be re-used for a new collection. If a new collection is created for the same group, the slug will have a numerical disambiguator appended to the end, exactly as in cases of group name collision. E.g., if the group panda-studies were deleted earlier, a request to create a new collection for the “Panda Studies” group would be assigned the URL slug panda-studies-1. This is to avoid breaking links to the deleted collection.

    -

    In future it may be possible to restore deleted collections, but this is not currently implemented.

    - -
    -
    -

    Request

    -
    POST https://works.hcommons.org/api/group_collections HTTP/1.1
    -
    -
    -

    Required request headers:

    -
    - - - - - - - - - - - - - - -

    Header name

    Header value

    Content-Type

    application/json

    Authorization

    Bearer <token>

    -
    -
    -
    -

    Request body

    -

    The request body must be a JSON object with the following fields:

    -
    - - - - - - - - - - - - - - - - - - - - - -

    Field name

    Required

    Description

    commons_instance

    Y

    The name of the Commons instance to which the group belongs. This must be the same string used to identify the instance in the GROUP_COLLECTIONS_METADATA_ENDPOINTS config variable.

    commons_group_id

    Y

    The ID of the Commons group that will own the collection.

    collection_visibility

    N

    The visibility setting for the collection to be created. Must be either “public” or “restricted”. [default: “restricted”]

    -
    -

    The resulting request body will be shaped like this:

    -
    {
    -    "commons_instance": "knowledgeCommons",
    -    "commons_group_id": "12345",
    -    "collection_visibility": "public",
    -}
    -
    -
    -
    -
    -

    Successful response status code

    -

    201 Created

    -
    -
    -

    Successful response body

    -
    {
    -    "commons_group_id": "12345",
    -    "collection_slug": "new-collection-slug"
    -}
    -
    -
    -
    -
    -

    Unsuccessful response codes

    -
      -
    • 400 Bad Request: The request body is missing required fields or contains -invalid data.

    • -
    • 404 Not Found: The specified group could not be found by the callback to the Commons instance.

    • -
    • 403 Forbidden: The request is not authorized to modify the collection.

    • -
    • 409 Conflict: A collection already exists in Knowledge Commons Works linked to the specified group.

    • -
    -
    -
    -
    -

    Changing the Group Ownership of a Collection (PATCH)

    -

    [!WARNING] -PATCH requests to change group ownership of the collection are not yet implemented.

    -

    A PATCH request to this endpoint modifies an existing collection in Invenio by changing the Commons group to which it belongs. This is the only modification that can be made to a collection via this endpoint. Other modifications to Commons group metadata should be handled by signalling the Invenio webhook for commons group metadata updates. Modifications to internal metadata or settings for the Invenio collection should be made view the Invenio “communities” API or the collection settings UI.

    -

    Note that the collection memberships in Invenio will be automatically transferred to the new Commons group. The corporate roles for the old Commons group will be removed from the collection and corporate roles for the new Commons group will be added to its membership with appropriate permissions. But any individual memberships that have been granted through the Invenio UI will be left unchanged. If the new collection administrators wish to change these individual memberships, they will need to do so through the Invenio UI.

    -
    -

    Request

    -
    PATCH https://works.hcommons.org/api/group_collections/my-collection-slug HTTP/1.1
    -
    -
    -

    Required request headers:

    -
    - - - - - - - - - - - - - - -

    Header name

    Header value

    Content-Type

    application/json

    Authorization

    Bearer <token>

    -
    -
    -
    -

    Request body

    -
    {
    -    "commons_instance": "knowledgeCommons",
    -    "old_commons_group_id": "12345",
    -    "new_commons_group_id": "67890",
    -    "new_commons_group_name": "My Group",
    -    "collection_visibility": "public",
    -}
    -
    -
    -
    -
    -

    Successful response status code

    -

    200 OK

    -
    -
    -

    Successful response body

    -
    {
    -    "collection": "my-collection-slug"
    -    "old_commons_group_id": "12345",
    -    "new_commons_group_id": "67890",
    -}
    -
    -
    -
    -
    -

    Unsuccessful response codes

    -
      -
    • 400 Bad Request: The request body is missing required fields or contains -invalid data.

    • -
    • 404 Not Found: The collection does not exist.

    • -
    • 403 Forbidden: The request is not authorized to modify the collection.

    • -
    • 304 Not Modified: The collection is already owned by the specified -Commons group.

    • -
    -
    -
    -
    -

    Deleting a Group’s Collection (DELETE)

    -

    A DELETE request to this endpoint deletes a collection in Invenio owned by the specified Commons group. Note that the request must include all of:

    -
      -
    • the collection slug as the url path parameter

    • -
    • the identifier of the Commons instance to which the group belongs, in the commons_instance query parameter

    • -
    • the Commons identifier of the group which owns the collection, in the commons_group_id query parameter

    • -
    -

    If any of these is missing the request will fail with a 400 Bad Request error. This is to ensure that collections are not deleted accidentally or by agents without authorization.

    -

    If the collection is successfully deleted, the response status code will be 204 No Content.

    -

    [!NOTE] -Once a group collection has been deleted, its former URL slug is still registered in Invenio’s PID store and reserved for the (now deleted) collection. Subsequent requests to create a collection for the same group cannot re-use the same URL slug. Instead the new slug will have a numerical disambiguator added to the end, exactly as in cases of group name collision. E.g., if the group panda-studies were deleted earlier, a request to create a new collection for the “Panda Studies” group would be assigned the URL slug panda-studies-1.

    -

    [!NOTE] -Group collections are soft deleted and can in principle be restored within a short period after the delete signal has been sent. Eventually, though, the soft deleted collection records will be -automatically purged entirely from the database. There is also no API mechanism for restoring them. So delete operations should be regarded as permanent and irrevocable.

    -
    -

    Request

    -
    DELETE https://works.hcommons.org/api/group_collections/my-collection-slug?commons_instance=knowledgeCommons&commons_group_id=12345 HTTP/1.1
    -
    -
    -

    Required request headers:

    -
    - - - - - - - - - - - - - - -

    Header name

    Header value

    Content-Type

    application/json

    Authorization

    Bearer <token>

    -
    -
    -
    -

    Successful response status code

    -

    204 No Content

    -
    -
    -

    Unsuccessful response codes

    -
      -
    • 400 Bad Request: The request did not include the required parameters or the parameters are not well formed.

    • -
    • 403 Forbidden: The requesting agent is not authorized to delete the collection. The collection may not belong to the Commons instance making the request, or it may not belong to the specified Commons group.

    • -
    • 404 Not Found: The collection does not exist.

    • -
    • 422 UnprocessableEntity: The deletion could not be performed because the

    • -
    -
    -
    -
    -
    -

    User and Group Data Updates (Internal Only)

    -
    https://works.hcommons.org/api/webhooks/user_data_update
    -
    -
    -
    -

    [!WARNING] -This API endpoint is intended for internal use only. It is not intended to be used by clients outside of the Knowledge Commons system.

    -
    -
    -

    [!NOTE] -This API was implemented with a distributed network of independent Commons instances in mind. Currently, only the Knowledge Commons instance exists and is supported as a SAML IDP by KCWorks.

    -
    -

    The api endpoint /api/webhooks/user_data_update is provided for Knowledge Commons applications and instances to signal that user or group metadata has been changed. These endpoints do not receive the actual updated data. They only receive notices that the metadata for a user or group has changed. KCWorks will then query the Commons instance’s endpoint to retrieve current metadata for the user or group.

    -
    -

    User/Groups Metadata updates and SAML authentication

    -

    It is assumed that Commons instances have registered a SAML authentication IDP with KCWorks. The Commons identifiers for users in metadata update signals must be the same identifiers provided by the instance’s SAML IDP. This allows KCWorks to reliably identify the correct KCWorks user account, even if the same identifier happens to be used internally by multiple Commons instances. It also allows KCWorks to store Commons instance user ids in one central place within KCWorks, minimizing the chances of those links between a Commons instance user account and a KCWorks user account becoming corrupted.

    -
    -
    -

    GET requests

    -

    A GET request to this endpoint can be used to check that the endpoint is available and receiving messages. The response should have a 200 status code and should carry the following JSON response body:

    -
    {
    -	"message": "Webhook receiver is active",
    -	"status": 200,
    -}
    -
    -
    -
    -
    -

    POST requests

    -
    -

    Payload objects

    -

    Update notices should be sent via a POST request with a JSON payload object shaped like this:

    -
    {
    -	"idp": "knowledgeCommons",
    -	"updates": {
    -		"users": [
    -			{"id": "myusername", "event": "updated"},
    -			{"id": "anotherusername", "event": "created"},
    -		],
    -		"groups": [{"id": "1234", "event": "updated"}],
    -	},
    -},
    -
    -
    -

    Top level payload object properties:

    -
    - - - - - - - - - - - - - - - - - - - - -

    Property

    Type

    Description

    Required

    idp

    string

    The name used by KCWorks to identify the identity provider the Commons instance has registered with KCWorks. This id should have been provided by the KCWorks administrators when the Commons instance’s IDP connection was established. For Knowledge Commons the value is knowledgeCommons

    Y

    updates

    object

    This object identifies the metadata updates that have taken place on the Commons instance. It allows updates of different kinds and for multiple entities to be signalled in a single request. Its properties are described below.

    Y

    -
    -

    updates object properties:

    -
    - - - - - - - - - - - - - - - - - - - - -

    Property

    Type

    Description

    Required

    users

    array

    An array of objects each representing one metadata change event for a single user.

    N

    groups

    array

    An array of objects each representing one metadata change for a single group.

    N

    -
    -

    NOTE: A valid payload must provide either a users array or a groups array with at least one member. Requests providing neither users nor groups, or providing only empty arrays, will result in an error response.

    -

    users and groups object properties

    -
    - - - - - - - - - - - - - - - - - - - - -

    Property

    Type

    Description

    Required

    id

    number

    The local identifier of the user or group on the Commons instance. This must be the same identifier that can be used to retrieve the entity’s metadata at the corresponding endpoint on the Commons instance.

    Y

    event

    string

    The nature of the metadata change for the entity. Must be one of updated, created, or deleted. The updated and deleted event types should be sent when an entity is first created or is deleted entirely from the Commons instance. These will trigger the creation or deletion of corresponding entities (a user or a group) on KC Works. All other metadata changes are updated events.

    Y

    -
    -

    NOTE: A valid payload’s user and/or group objects must each include both an id and an event value.

    -
    -
    -

    Event timing

    -

    There may be some delay between KC Works’ receiving an update signal and the updating of the corresponding entity’s metadata in KC Works. The actual updates are handled by background workers and in some cases there may be a slight delay before a worker is free. Usually this will only be a fraction of a second, but if intensive background tasks (like indexing) are ongoing it could be several minutes. The update also depends on a successful callback request from KC Works to the Commons instance’s endpoint for serving user or group metadata. If that request fails, it is possible for an update to fail even though the webhook signal was received successfully.

    -
    -
    -

    Success responses

    -

    If a signal is received successfully, the response will have a status of 202 and carry a JSON response object shaped like this:

    -
    {
    -	"message": "Webhook received",
    -	"status": 202,
    -	"updates": {
    -		"users": [
    -			{"id": "myusername", "event": "updated"},
    -			{"id": "anotherusername", "event": "created"},
    -		],
    -		"groups": [{"id": "1234", "event": "updated"}],
    -	}
    -}
    -
    -
    -

    The updates object should be identical to the updates object provided in the POST request. This confirms that the correct events have all been received and are being sent for processing.

    -
    -
    -

    Error responses

    -

    If multiple update signals are received in one POST request, it is possible that only some of the updates can be processed. The request might, for example, provide updated event signals for a number of entities, some of whose ids do not exist in KC Works. In this case the response code will be 207 Multi-Status and the response payload will be a JSON object

    -
    - -
    -
    -
    -
    - - -

    - -
    - - - - - - - - \ No newline at end of file diff --git a/docs/build/architecture.html b/docs/build/architecture.html deleted file mode 100644 index 29d2f1fa2..000000000 --- a/docs/build/architecture.html +++ /dev/null @@ -1,1146 +0,0 @@ - - - - - - - - - KCWorks Architecture - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    -
    -

    KCWorks Architecture

    -
    -

    InvenioRDM’s Layered Architecture

    -

    InvenioRDM employs a layered architecture with:

    -
      -
    1. Data layer

      -
        -
      • Low-level data storage and retrieval.

        -
          -
        • Primarily SQLAlchemy model classes.

        • -
        -
      • -
      • High-level data API classes that provide a Pythonic interface to the data layer.

        -
          -
        • Validate data before storing it.

        • -
        -
      • -
      -
    2. -
    3. Service layer

      -
        -
      • Retrieves and modifies data from the data layer, either for a view or for another service.

        -
          -
        • Providing abstract CRUD methods for operating on the data layer’s API classes.

        • -
        • Providing abstracted “result items” and “result lists”

        • -
        -
      • -
      • Enforces permission and access control policies.

      • -
      -
    4. -
    5. View layer

      -
        -
      • Consists of

        -
          -
        • Flask views (registered as Blueprints)

        • -
        • rendering either

          -
            -
          • Jinja2 templates to produce HTML

          • -
          • JSON to produce API responses

          • -
          -
        • -
        • in some cases, React components embedded in the Jinja2 templates

          -
            -
          • These are rendered on the client side

          • -
          • Data is passed from the Jinja2 templates to the React components via HTML data attributes

          • -
          -
        • -
        -
      • -
      -
    6. -
    -
    -
    -

    InvenioRDM Services

    -

    An InvenioRDM service is a class that provides methods for interacting with the data layer. The business logic of the service is usually delegated to one or more component classes, which are called during the service’s methods.

    -
    -

    Service Classes

    -
    -

    BaseService

    -

    The base Service class is defined in invenio_records_resources.services.base.Service. It defines methods for:

    -
      -
    • Getting the service ID

      -
        -
      • id(self): Return the id of the service from config.

      • -
      -
    • -
    • Permissions checking

      -
        -
      • permission_policy(self, action_name, **kwargs): Factory for a permission policy instance.

      • -
      • check_permission(self, identity, action_name, **kwargs): Check a permission against the identity.

      • -
      • require_permission(self, identity, action_name, **kwargs): Require a specific permission from the permission policy.

      • -
      -
    • -
    • Handling service components

      -
        -
      • components(self): Return initialized instances of the service’s component classes.

      • -
      • run_components(self, action, *args, **kwargs): Run components for a given action.

      • -
      -
    • -
    • Producing result items and lists

      -
        -
      • result_item(self, *args, **kwargs): Create a new instance of the resource unit, i.e. whatever the service provides.

      • -
      • result_list(self, *args, **kwargs): Create a new list of resource units. In some cases this is a simple iterable of resource units, but in other cases it is a more complex object that includes additional data.

      • -
      -
    • -
    -
    -
    -

    RecordService

    -

    Services dealing with InvenioRDM records of some kind (e.g. records, drafts, communities, etc.) inherit from the RecordService class defined in invenio_records_resources.services.records.service. This class adds:

    -
      -
    • properties and methods related to the service’s related data-layer API class

      -
        -
      • A schema property that returns a ServiceSchemaWrapper instance.

      • -
      • A record_cls property that returns the record class for the service.

      • -
      • A links_item_tpl property that returns a LinksTemplate instance for constructing links to a resource unit.

      • -
      • An expandable_fields property that returns a list of expandable fields for the service’s data-layer API class.

      • -
      -
    • -
    • Methods for creating searches

      -
        -
      • create_search(self, identity, record_cls, search_opts, permission_action="read", preference=None, extra_filter=None, versioning=True): Instantiate a search class.

      • -
      • search_records(self, identity, params, **kwargs): A low-level method to create an OpenSearch DSL instance for searching records.

      • -
      • search(self, identity, params=None, search_preference=None, expand=False, **kwargs): A high-level method to search for records matching the querystring.

      • -
      • scan(self, identity, params=None, search_preference=None, expand=False, **kwargs): A high-level method to perform a rolling “scroll” search for records matching the querystring. (This is used for searching through large numbers of records, since OpenSearch will not return more than 10,000 records at a time.)

      • -
      -
    • -
    • Methods for indexing records

      -
        -
      • reindex(self, identity, params=None, search_preference=None, search_query=None, extra_filter=None, **kwargs): A high-level method to reindex records matching the query parameters.

      • -
      • rebuild_index(self, identity, uow=None): A high-level method to reindex all records managed by this service.

      • -
      -
    • -
    • CRUD methods

      -
        -
      • create(self, identity, data, uow=None, expand=False): Create a record.

      • -
      • exists(self, identity, id_): Check if the record exists and user has permission. (Does not use the search index.)

      • -
      • read(self, identity, id_, expand=False, action="read"): Retrieve a record. (Does not use the search index.)

      • -
      • read_many(self, identity, ids, expand=False, action="read"): Retrieve multiple records using the search index.

      • -
      • read_all(self, identity, params=None, search_preference=None, expand=False, **kwargs): Retrieve all records matching the query parameters using the search index.

      • -
      • update(self, identity, id_, data, uow=None, expand=False): Update a record.

      • -
      • delete(self, identity, id_, uow=None): Delete a record.

      • -
      -
    • -
    • Helper methods for record management

      -
        -
      • check_revision_id(self, record, expected_revision_id): Validate the given revision_id with current record’s one.

      • -
      • on_relation_update(self, identity, record_type, records_info, notif_time, limit=100): Handles the update of a related field record when the related field is updated.

      • -
      -
    • -
    -
    -
    -

    Augmented RecordService

    -

    The invenio_drafts_resources package then overrides this with a RecordService class that adds (a) a distinction between published and draft records, (b) record versioning and a parent-child record relationship, and (c) file attachments to service records. This adds the following properties and methods to the RecordService class:

    -
      -
    • Properties and methods for draft records

      -
        -
      • draft_cls(self): Return the record class for the service.

      • -
      • draft_files(self): Return the draft files service for the service.

      • -
      • draft_indexer(self): A factory for creating an indexer instance.

      • -
      • search_drafts(self, identity, params=None, search_preference=None, expand=False, extra_filter=None, **kwargs): Search for draft records matching the querystring.

      • -
      • read_draft(self, identity, id_, expand=False): Retrieve a draft record.

      • -
      • update_draft(self, identity, id_, data, revision_id=None, uow=None, expand=False): Replace a draft.

      • -
      • edit(self, identity, id_, uow=None, expand=False): Creates a new revision of a draft or a draft for an existing published record.

      • -
      • publish(self, identity, id_, uow=None, expand=False): Publishes a draft record.

      • -
      • delete_draft(self, identity, id_, revision_id=None, uow=None): Deletes a draft record. (Defaults to a soft delete, so the record is not actually deleted from the database or search index until a later cleanup operation.)

      • -
      • validate_draft(self, identity, id_, ignore_field_permissions=False): Validate a draft.

      • -
      • cleanup_drafts(self, timedelta, uow=None, search_gc_deletes=60): Hard delete of soft deleted drafts.

      • -
      -
    • -
    • Properties and methods for files

      -
        -
      • files(self): Return the files service for the service.

      • -
      • import_files(self, identity, id_, uow=None): Import files from previous record version.

      • -
      -
    • -
    • Properties and methods for versions and parent records

      -
        -
      • schema_parent(self): Return the parent schema for the service.

      • -
      • search_versions(self, identity, id_, params=None, search_preference=None, expand=False, permission_action="read", **kwargs): Search for record’s versions.

      • -
      • read_latest(self, identity, id_, expand=False): Retrieve the latest version of a record.

      • -
      • new_version(self, identity, id_, uow=None, expand=False): Creates a new version of a record. -This overridden RecordService class also modifies the CRUD methods to enforce a workflow in which records are only modified via their draft records. This involves overriding:

      • -
      -
    • -
    • update(self, identity, id_, data, uow=None, expand=False): Now raises a NotImplementedError error.

    • -
    • create(self, identity, data, uow=None, expand=False): Now creates a draft record.

    • -
    • rebuild_index(self, identity): Now reindexes all draft records (instances of draft API class) as well as all published records (instances of record API class) and skips soft-deleted records.

    • -
    -
    -
    -

    RDMRecordService

    -

    The invenio_rdm_records package provides an RDMRecordService class that inherits from the RecordService class and adds:

    -
      -
    • Additional properties for accessing subservices

      -
        -
      • access: Return the access service for the service.

      • -
      • pids: Return the PIDs service for the service.

      • -
      • review: Return the review service for the service.

      • -
      -
    • -
    • Methods for embargo handling

      -
        -
      • lift_embargo(self, identity, _id, uow=None): Lifts an embargo from the record and draft (if exists).

      • -
      • scan_expired_embargos(self, identity): Scan for records with an expired embargo.

      • -
      -
    • -
    • Properties and methods for file quota handling

      -
        -
      • schema_quota: Return the schema for quota information.

      • -
      • set_quota(self, identity, id_, data, files_attr="files", uow=None): Set the quota values for a record.

      • -
      • set_user_quota(self, identity, id_, data, uow=None): Set the user files quota.

      • -
      -
    • -
    • Properties and methods for deletion of published records

      -
        -
      • schema_tombstone: Return the schema for tombstone information.

      • -
      • delete_record(self, identity, id_, data, expand=False, uow=None, revision_id=None): Re-introduces soft-deletion of published records (which were previously removed by the RecordService class).

      • -
      • update_tombstone(self, identity, id_, data, expand=False, uow=None): Update the tombstone information for the (soft) deleted record.

      • -
      • cleanup_record(self, identity, id_, uow=None): Clean up a (soft) deleted record.

      • -
      • restore_record(self, identity, id_, expand=False, uow=None): Restore a record that has been (soft) deleted.

      • -
      • mark_record_for_purge(self, identity, id_, expand=False, uow=None): Mark a (soft) deleted record for purge.

      • -
      • unmark_record_for_purge(self, identity, id_, expand=False, uow=None): Remove the mark for deletion from a record, returning it to deleted state.

      • -
      • purge_record(self, identity, id_, uow=None): Purge a record that has been marked.

      • -
      -
    • -
    • Overridden methods to add deletion-related functionality

      -
        -
      • read(self, identity, id_, expand=False, action="read", include_deleted=False): Adds an include_deleted argument to the read method, and a check for the read_deleted permission if it is set to True.

      • -
      • read_draft(self, identity, id_, expand=False): Prevents reading a draft if there is a published deleted record. (410 response.)

      • -
      • search(self, identity, params=None, search_preference=None, expand=False, extra_filter=None, **kwargs): Adds a “read_deleted” permission action to the search method.

      • -
      • search_drafts(self, identity, params=None, search_preference=None, expand=False, extra_filter=None, **kwargs): Adds a filter to exclude soft-deleted records from the search results.

      • -
      • search_versions(self, identity, id_, params=None, search_preference=None, expand=False, permission_action="read", **kwargs): Adds a “read_deleted” permission action to the search method.

      • -
      -
    • -
    • Additional overridden methods for other functionality

      -
        -
      • publish(self, identity, id_, uow=None, expand=False): Adds a check prior to the original publish method to allow enforcement of a config setting that requires a community to be present on a record before it can be published.

      • -
      • update_draft(self, identity, id_, data, revision_id=None, uow=None, expand=False): Adds a check prior to the original update_draft method to allow enforcement of a config setting that prevents a record from being restricted after the grace period.

      • -
      -
    • -
    • Additional new methods for other functionality

      -
        -
      • expandable_fields: Expands the communities field to return community details.

      • -
      • oai_result_item(self, identity, oai_record_source): Get a result item from a record source in the OAI server.

      • -
      • scan_versions(self, identity, id_, params=None, search_preference=None, expand=False, permission_action="read_deleted", **kwargs): Search for record’s versions using a “scroll” search.

      • -
      -
    • -
    -
    -
    -
    -

    Service Configuration

    -

    A service configuration is an object that provides the service with its configuration. It is passed to the service’s constructor when it is instantiated during the Flask app initialization.

    -

    The service configuration is defined in the service’s config attribute.

    -

    All service configurations inherit from the ServiceConfig class, which is defined in invenio_records_resources.services.base.config. They include at least:

    -
      -
    • service_id: The ID of the service.

    • -
    • permission_policy_cls: The permission policy class to use for the service.

    • -
    • result_item_cls: The result item class to use for the service.

    • -
    • result_list_cls: The result list class to use for the service.

    • -
    -

    This is expanded in a RecordServiceConfig class by the invenio_records_resources package to add:

    -
      -
    • record_cls: The record class to use for the service.

    • -
    • indexer_cls: The indexer class to use for the service.

    • -
    • indexer_queue_name: The name of the task queue to be used by the service’s indexer.

    • -
    • index_dumper: The dumper to be used for serializing records to be indexed by OpenSearch.

    • -
    • relations: The inverse relation mapping for the service, defining which fields relate to which record type.

    • -
    • search: The search configuration for the service. (This is a SearchOptions instance.)

    • -
    • schema: The schema to be used when validating the service’s records.

    • -
    • links_item: The template for creating url links for the service’s result items.

    • -
    • links_search: The template for creating url links for the service’s search endpoints.

    • -
    • components: A list of components that will be used by the service.

    • -
    -

    It is further expanded in an overridden RecordServiceConfig class by the invenio_drafts_resources package to add:

    -
      -
    • draft_cls: The draft record class to use for the service.

    • -
    • draft_indexer_cls: The indexer class to use for the service’s draft records.

    • -
    • draft_indexer_queue_name: The name of the task queue to be used by the service’s draft records indexer.

    • -
    • schema_parent: The schema used to valid parent records for the service.

    • -
    • search_drafts: A search class for searching for draft records.

    • -
    • search_versions: A search class for searching for record versions.

    • -
    • default_files_enabled: Whether files are enabled by default for the service.

    • -
    • default_media_files_enabled: Whether media files are enabled by default for the service.

    • -
    • lock_edit_published_files: Whether to lock editing of published files for the service.

    • -
    • links_search_drafts: The template for creating url links for the service’s search drafts endpoint.

    • -
    • links_search_versions: The template for creating url links for the service’s search versions endpoint.

    • -
    -

    The RDMRecordServiceConfig class adds the following additional configuration attributes:

    -
      -
    • max_files_count: The maximum number of files that can be attached to a record.

    • -
    • file_links_list: The list of file links for the service.

    • -
    • schema_access_settings: The schema for access settings.

    • -
    • schema_secret_link: The schema for secret links.

    • -
    • schema_grant: The schema for grants.

    • -
    • schema_grants: The schema for grants.

    • -
    • schema_request_access: The schema for request access.

    • -
    • schema_tombstone: The schema for tombstone.

    • -
    • schema_quota: The schema for quota.

    • -
    -

    Additional common configration attributes are added by inheriting from additional mixin classes.

    -
    -

    Attaching configuration to the service

    -

    The service config class can be passed to the service’s constructor when it is instantiated during the Flask app initialization (i.e., in the init_app() method of the extension):

    -
    service = MyService(config=MyServiceConfig)
    -
    -
    -

    Alternatively, if the service config class inherits from the ConfiguratorMixin class, the service and its config class can be initialized like this:

    -
    service = MyService(MyServiceConfig.build(app))
    -
    -
    -
    -
    -

    File service configuration

    -

    The FileConfigMixin class (defined in invenio_records_resources.services.records.components.files) adds config class attributes for: ????

    -
      -
    • _files_attr_key: The attribute key for the files field.

    • -
    • _files_data_key: The attribute key for the files data.

    • -
    • _files_bucket_attr_key: The attribute key for the files bucket.

    • -
    • _files_bucket_id_attr_key: The attribute key for the files bucket ID.

    • -
    -
    -
    -

    Search configuration

    -
    -
    SearchOptionsMixin
    -

    This mixin class (defined in invenio_records_resources.services.base.config) adds config class attributes for:

    -
      -
    • facets: The search facet definitions for searches on the service’s resource.

    • -
    • sort_options: The sort options for searches on the service’s resource.

    • -
    • sort_default: The default sort option for searches on the service’s resource.

    • -
    • sort_default_no_query: The default sort option for searches on the service’s resource when no query is present.

    • -
    • available_sort_options: The available sort options for searches on the service’s resource.

    • -
    • query_parser_cls: The query parser class to use in constructing searches on the service’s resource.

    • -
    -
    -
    -
    SearchConfig
    -

    The SearchConfig class (defined in invenio_records_resources.services.base.config) defines the search configuration that will be used to interface with OpenSearch.

    -
    -
    -
    FromConfigSearchOptions
    -

    The FromConfigSearchOptions class (defined in invenio_records_resources.services.base.config) is used to load search configuration from app config variables. In the service’s config class, it is used like this:

    -
    -
    -
    -

    Loading configuration from app config variables

    -

    The FromConfig class (defined in invenio_records_resources.services.base.config) is used to load configuration from app config variables. In the service’s config class, it is used like this:

    -
    class MyServiceConfig(ServiceConfig):
    -    foo = FromConfig("FOO", default=1)
    -
    -
    -

    In the app config, the config variable is defined like this:

    -
    FOO = 2
    -
    -
    -

    When the service is instantiated, the FromConfig class will load the config variable from the app config and assign it to the foo attribute.

    -
    -
    -
    -

    Service Components

    -

    A service component is a class that provides methods that shadow the service’s methods. When a service method is called, it passes the call through each of the service’s components (using the Service.run_components() method), allowing each component to perform additional processing before the result is returned. If the service component includes a method with the same name as the service method that is being called, its matching method will be called. During this call, the component method is passed the service method’s arguments and keyword arguments, and the service method’s modified versions of these arguments are passed on to the next component. Once all the service’s components have been called, the result is returned to the service method, which returns the final result or performs the final action.

    -
    -

    BaseServiceComponent

    -

    The BaseServiceComponent class (defined in invenio_records_resources.services.base.components) is the base class for all service components. It provides a uow property that returns the Unit of Work manager.

    -

    This class is overridden by the ServiceComponent class (defined in invenio_records_resources.services.base.components.base), which adds the following methods:

    -
      -
    • create(self, identity, **kwargs): Perform additional processing while creating an item of the service’s resource.

    • -
    • read(self, identity, **kwargs): Perform additional processing while retrieving an item of the service’s resource.

    • -
    • update(self, identity, **kwargs): Perform additional processing while updating an item of the service’s resource.

    • -
    • delete(self, identity, **kwargs): Perform additional processing while deleting an item of the service’s resource.

    • -
    • search(self, identity, search, params, **kwargs): Perform additional processing while searching for items of the service’s resource.

    • -
    -

    The invenio_drafts_resources package overrides the ServiceComponent class to add methods matching the overridden RecordService methods for draft records and versioning.

    -
      -
    • read_draft(self, identity, draft=None): Retrieve a draft record.

    • -
    • update_draft(self, identity, data=None, record=None, errors=None): Update a draft record.

    • -
    • delete_draft(self, identity, draft=None, record=None, force=False): Delete a draft record.

    • -
    • edit(self, identity, draft=None, record=None): Edit a record.

    • -
    • new_version(self, identity, draft=None, record=None): Create a new version of a record.

    • -
    • publish(self, identity, draft=None, record=None): Publish a draft record.

    • -
    • import_files(self, identity, draft=None, record=None): Import files from previous record version.

    • -
    • post_publish(self, identity, record=None, is_published=False): Post publish handler.

    • -
    -
    -
    -

    RecordService Components

    -

    The invenio_records_resources package provides the following components for the RecordService class:

    -
      -
    • DataServiceComponent (create, update): Adds data to the record.

    • -
    • BaseRecordFilesComponent (create, update):

      -
        -
      • Handles enabling/disabling files for a record.

      • -
      • Handles setting the default preview file for a record.

      • -
      -
    • -
    • MetadataComponent (create, update): Adds metadata to the new/updated record from the input data.

    • -
    • RelationsComponent (read): Dereferences a record’s related fields in order to provide the data from the related records in a read result.

    • -
    • ChangeNotificationsComponent (update): Emits a change notification for the updated record.

    • -
    -

    The invenio_drafts_resources package provides additional components for the RecordService class:

    -
      -
    • an overridden BaseRecordFilesComponent class that adds methods for ???

    • -
    • DraftFilesComponent: Handles files for draft records.

    • -
    • DraftMediaFilesComponent: Handles media files for draft records.

    • -
    • DraftMetadataComponent: Handles metadata for draft records.

    • -
    • PIDComponent (create, delete_draft): Handles registration of PIDs for draft records.

    • -
    • an overridden RelationsComponent class that adds a read_drafts method

    • -
    -

    The invenio_rdm_records package provides additional components for the RDMRecordService class:

    -
      -
    • AccessComponent(create, update_draft, publish, edit, new_version): Handles access settings for records.

    • -
    • an overridden MetadataComponent class (create, update_draft, publish, edit, new_version): Adds metadata to the new/updated record from the input data. (Removes the update method from the earlier MetadataComponent class.)

    • -
    • CustomFieldsComponent(create, update_draft, publish, edit, new_version): Adds custom fields to the metadata of a record.

    • -
    • PIDsComponent(create, update_draft, delete_draft, publish, edit, new_version, delete_record, restore_record): Handles PIDs for records.

    • -
    • ParentPIDsComponent(create, publish, delete_record, restore_record): Handles parent PIDs for records.

    • -
    • RecordDeletionComponent(delete_record, update_tombstone, restore_record, mark_record, unmark_record, purge_record): Handles deletion of records.

    • -
    • RecordFilesProcessorComponent(publish, lift_embargo): Handles file processing for records.

    • -
    • ReviewComponent(create, delete_draft, publish): Handles reviews for records.

    • -
    • SignalComponent(publish): Triggers signals on publish.

    • -
    • ContentModerationComponent(publish): Creates a moderation request if the user is not verified.

    • -
    -
    -
    -

    RDMRecordService Components

    -

    The invenio_rdm_records package draws its list of components from the RDM_RECORDS_SERVICE_COMPONENTS config variable. The default list is defined in the DefaultRecordsComponents class (defined in invenio_rdm_records.services.config) and currently includes:.

    -
    [
    -    MetadataComponent,
    -    CustomFieldsComponent,
    -    AccessComponent,
    -    DraftFilesComponent,
    -    DraftMediaFilesComponent,
    -    RecordFilesProcessorComponent,
    -    RecordDeletionComponent,
    -    # for the internal `pid` field
    -    PIDComponent,
    -    # for the `pids` field (external PIDs)
    -    PIDsComponent,
    -    ParentPIDsComponent,
    -    RelationsComponent,
    -    ReviewComponent,
    -    ContentModerationComponent,
    -]
    -
    -
    -

    Note that the order of the components in the list is important, since the components are called in the order they are listed and some components depend on the results of previous components.

    -
    -
    -
    -
    -

    InvenioRDM Record Objects

    -
    -

    API-level Record Objects

    -
    -

    RDMDraft (invenio_rdm_records.records.api.RDMDraft)

    -

    The RDMDraft object is a subclass of the Record object (defined in invenio_records.api.Record) and includes all of the submitted metadata values, along with the keys:

    -
      -
    • $schema

    • -
    • id

    • -
    • created

    • -
    • updated

    • -
    • revision_id

    • -
    • version_id

    • -
    • pid (as opposed to pids, a separate field)

    • -
    • media_files (if not present in data)

    • -
    • custom_fields (if not present in data)

    • -
    -

    Its dict has the following shape (these values are available by key and also as dot properties):

    -
    {
    -'$schema': 'local://records/record-v6.0.0.json',
    -'pid': {
    -    'pk': 88,
    -    'pid_type': 'recid',
    -    'status': 'N',
    -    'obj_type': 'rec'
    -},
    -'id': '9f06s-7d583',
    -'files': {
    -    'enabled': True
    -},
    -'media_files': {
    -    'enabled': True
    -},
    -'metadata': {
    -    'resource_type': {'id': 'image-photograph'},
    -    'creators': [
    -        {'person_or_org': {
    -            'type': 'personal',
    -            'given_name': 'Troy',
    -            'family_name': 'Brown',
    -            'name': 'Brown, Troy'}
    -        },
    -        {'person_or_org': {
    -            'type': 'organizational',
    -            'name': 'Troy Inc.'}
    -        }
    -    ],
    -    'title': 'A Romans story',
    -    'publisher': 'Acme Inc',
    -    'publication_date': '2020-06-01'
    -},
    -'custom_fields': {},
    -'access': {
    -    'record': 'public',
    -    'files': 'public'
    -},
    -'pids': {}
    -}
    -
    -
    -

    The RDMDraft also has the following properties:

    -
      -
    • ‘bucket’,

    • -
    • ‘bucket_id’,

    • -
    • ‘created’,

    • -
    • ‘dumper’,

    • -
    • ‘expires_at’,

    • -
    • ‘fork_version_id’,

    • -
    • ‘format_checker’,

    • -
    • ‘has_draft’,

    • -
    • ‘index’,

    • -
    • ‘is_deleted’,

    • -
    • ‘is_draft’,

    • -
    • ‘is_published’,

    • -
    • ‘media_bucket’,

    • -
    • ‘media_bucket_id’,

    • -
    • ‘model’,

    • -
    • ‘model_cls’,

    • -
    • ‘parent’,

    • -
    • ‘parent_record_cls’,

    • -
    • ‘revision_id’,

    • -
    • ‘revisions’,

    • -
    • ‘schema’,

    • -
    • ‘status’,

    • -
    • ‘updated’,

    • -
    • ‘validator’,

    • -
    • ‘versions’,

    • -
    • ‘versions_model_cls’

    • -
    -

    And the following methods (among others, including standard dict methods)

    -
      -
    • ‘cleanup_drafts’,

    • -
    • ‘clear’,

    • -
    • ‘clear_none’,

    • -
    • ‘commit’,

    • -
    • ‘copy’,

    • -
    • ‘dumps’,

    • -
    • ‘get_latest_by_parent’,

    • -
    • ‘get_record’,

    • -
    • ‘get_records’,

    • -
    • ‘get_records_by_parent’,

    • -
    • ‘items’,

    • -
    • ‘keys’,

    • -
    • ‘loads’,

    • -
    • ‘new_version’,

    • -
    • ‘register’,

    • -
    • ‘relations’,

    • -
    • ‘revert’,

    • -
    • ‘send_signals’,

    • -
    • ‘undelete’,

    • -
    • ‘validate’,

    • -
    -
    -
    -
    -

    Service-level Response Objects

    -
    -
    -
    -

    How Tos: Creating and Modifying Records

    -
    -

    Creating and Modifying Records in General

    -

    All InvenioRDM record services inherit the same core methods from the RecordService class. In the examples below, the service variable represents an instance of a record service. The identity variable represents an identity object.

    -
    -

    Update a record

    -

    Note that this will not work for deposit records, since they are not directly editable. The RDMRecordService update method will raise a NotImplementedError error. Those records must be updated via a draft. Other record services, though, allow direct updates.

    -
    record = service.read(id_=pid, identity=identity)._record
    -record.update(metadata)
    -
    -# the refresh is required because the access system field takes precedence
    -# over the record's data in 'record.commit()'
    -record.access.refresh_from_dict(record["access"])
    -record.commit()
    -db.session.commit()
    -service.indexer.index(record)
    -
    -
    -
    -
    -

    Delete a record

    -

    Note that this will not work for deposit records, since they are not directly deletable. The RDMRecordService delete method will raise a NotImplementedError error. Those records must be deleted via a draft. Other record services, though, allow direct deletions.

    -
    deleted_record = service.delete(id_=pid, identity=identity)
    -
    -
    -
    -
    -
    -

    Reading Deposit Records (RDMRecordService)

    -

    Note that, unlike most record service retrieval methods, the read method does not use the search index. It retrieves the record from the database directly with a SQLAlchemy query. This means, though, that it will not always include the latest data from the search index, and that updated information present in a read result may not yet be present in the search index.

    -
    from invenio_rdm_records.proxies import current_rdm_records_service
    -
    -one_record = current_rdm_records_service.read(identity, id)
    -all_records = current_rdm_records_service.read_all()
    -multiple_records = current_rdm_records_service.read_many(identity, ids)
    -
    -
    -
    -
    -

    Creating and Modifying a Deposit Record (RDMRecordService)

    -
    -

    The InvenioRDM Record Life Cycle

    -

    InvenioRDM uses a “draft-first” approach to record creation and modification. Records are created as drafts and the published in a separate step. Published records cannot be modified directly. Instead, a new draft must be created, updated with new metadata, and then published again.

    -

    No revision history is kept for drafts or for edits to published records. Only a record’s latest draft is kept, and only its latest published state is preserved. In order to preserve a history of changes, you must create new record versions. When a new version is created, the previous version’s published state is preserved. A new draft is created that can be published without affecting the previous version. This new version can, in turn, be edited and re-published any number of times without any preserved history. When desired, a new permanently preserved state for the record can by frozen by creating yet another new version.

    -

    While a record is in draft state, it can be hard deleted with no preserved record. Once a draft has been published, it can generally only be soft deleted. The record is no longer available or discoverable via the search index, but a tombstone placeholder is preserved. This provides a record that can be presented if, for example, someone tries to access a deleted record’s DOI link.

    -

    The life cycle of records for a single work can be represented in a diagram like this:

    -RDMRecord Life Cycle -

    The solid arrows represent methods of the RDMRecordService class. The beige rectangles represent preserved versions of the record, recoverable record states in its revision history.

    -
    -
    -

    Gotchas with the RDMRecordService

    -

    Note that InvenioRDM only ever allows one draft to be associated with a record. There is no editing history for drafts. So draft updates are “destructive” in the sense that the previous state of the draft is lost. If you need to keep a history of changes, you must create published versions of the record.

    -
    -
    -

    Create a draft of a new record

    -
    from invenio_rdm_records.proxies import current_rdm_records_service
    -draft = current_rdm_records_service.create(identity=identity, data=data)
    -
    -
    -
    -
    -

    Hard delete a draft

    -
    from invenio_rdm_records.proxies import current_rdm_records_service
    -
    -current_rdm_records_service.delete_draft(id_=pid, identity=identity)
    -
    -
    -

    No tombstone is created for a hard deleted draft. It cannot be recovered once deleted.

    -
    -
    -

    Update an unpublished draft

    -
    from invenio_rdm_records.proxies import current_rdm_records_service
    -draft_data = current_rdm_records_service.read_draft(id_=pid, identity=identity).data.copy()
    -# update the metadata...
    -edited_draft = current_rdm_records_service.update_draft(id_=pid, identity=identity, data=metadata)
    -
    -
    -
    -
    -

    Update a published record via a new draft

    -
    from invenio_rdm_records.proxies import current_rdm_records_service
    -
    -# create a draft of the published record
    -draft_of_published = current_rdm_records_service.edit(id_=pid, identity=identity)
    -# update the draft
    -updated_draft = current_rdm_records_service.update_draft(id_=pid, identity=identity, data=metadata)
    -# publish the draft
    -published_record = current_rdm_records_service.publish(id_=pid, identity=identity)
    -
    -
    -
    -
    -

    Create a new version of a published record

    -
    from invenio_rdm_records.proxies import current_rdm_records_service
    -
    -new_version_draft = current_rdm_records_service.new_version(id_=pid, identity=identity)
    -
    -
    -

    The new version draft is a new draft of the published record. It includes the previous version’s published state, which can be edited and published again.

    -

    Note that the new version draft is not automatically published. You must publish it separately. Its internal InvenioRDM record id (id) is the same as the previous version’s id. But the new version, once published, will be assigned a new DOI.

    -
    -
    -

    Soft-delete a published record

    -
    from invenio_rdm_records.proxies import current_rdm_records_service
    -
    -tombstone_info = {"note": "no specific reason, tbh"}
    -deleted_record = current_rdm_records_service.delete_record(identity, record.id,
    -                                                           tombstone_info)
    -
    -
    -
    -
    -

    Restore a soft-deleted record

    -
    from invenio_rdm_records.proxies import current_rdm_records_service
    -
    -restored_record = current_rdm_records_service.restore_record(identity, record.id)
    -
    -
    -
    -
    -
    -
    -

    How Tos: Custom Record Service Components

    -
    -

    Component Methods

    -

    The following documents the arguments and data available to the various service component methods for the RDMRecordService.

    -
    -

    create()

    -

    The create method of a service component is called before the completion of the RecordService.create method. It receives the following arguments:

    -
      -
    • data: dict

    • -
    • record: invenio_rdm_records.records.api.RDMDraft

    • -
    • errors: list

    • -
    • uow: invenio_records_resources.services.uow.UnitOfWork

    • -
    -
    -
    data
    -

    The data value is a simple dict holding the submitted data to be used to create the record. It has the general shape of the InvenioRDM record schema, although it lacks several of the top-level keys that are present in a record object:

    -
    {
    -'access':  {
    -    'files': 'public',
    -    'record': 'public'
    -},
    -'custom_fields': {},
    -'files': {'enabled': False},
    -'metadata': {
    -    'creators': [
    -        {'person_or_org': {
    -            'family_name': 'Brown',
    -            'given_name': 'Troy',
    -            'name': 'Brown, Troy',
    -            'type': 'personal'
    -            }
    -        },
    -        {'person_or_org': {
    -            'name': 'Troy Inc.',
    -            'type': 'organizational'
    -            }
    -        }
    -    ],
    -    'publication_date': '2020-06-01',
    -    'publisher': 'Acme Inc',
    -    'resource_type': {'id': 'image-photograph'},
    -    'title': 'A Romans story'
    -},
    -'pids': {}
    -}
    -
    -
    -

    In particular, the data value lacks the following keys:

    -
      -
    • id

    • -
    • created

    • -
    • updated

    • -
    • revision_id

    • -
    • version_id

    • -
    -

    If the record has not yet been published (or a DOI reserved), the ‘pids’ key will be empty.

    -
    -
    -
    record
    -

    The record value is a invenio_rdm_records.records.api.RDMDraft object that includes all of the data values, along with the keys:

    -
      -
    • $schema

    • -
    • pid (as opposed to pids, a separate field)

    • -
    • media_files (if not present in data)

    • -
    • custom_fields (if not present in data)

    • -
    -

    For more information on the RDMDraft object, see the InvenioRDM Record Objects section.

    -
    -
    -
    -
    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/changelog.html b/docs/build/changelog.html deleted file mode 100644 index c1f578400..000000000 --- a/docs/build/changelog.html +++ /dev/null @@ -1,623 +0,0 @@ - - - - - - - - - Changes - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    - - -
    -

    Changes

    -
    -

    Not yet released

    -
      -
    • Documentation

      -
        -
      • Added documentation of known issues.

      • -
      -
    • -
    -
    -
    -

    0.3.8-beta11 (2025-03-14)

    -
      -
    • File Uploads

      -
        -
      • Fixed a bug causing large file uploads to fail.

      • -
      • Partially fixed a bug causing some parallel file uploads to fail. (A complete fix will require changes to InvenioRDM.)

      • -
      • Added a button to allow deleting files (and so retrying them) when an upload has failed.

      • -
      • Minor UI improvements to the upload form file upload widget:

        -
          -
        • layout improvements for the file list

        • -
        • changed the “pending” label to “failed” when a file’s content upload has failed.

        • -
        • added a note advising against parallel uploads of large files

        • -
        • added a flag in the file list if a file type cannot be previewed

        • -
        -
      • -
      -
    • -
    • Search

      -
        -
      • Added a note to the subjects widget of the upload form to advise users to select a subject category.

      • -
      -
    • -
    • Documentation

      -
        -
      • Some improvements to the developer documentation.

      • -
      -
    • -
    • Testing

      -
        -
      • Several improvements to the test suite allowing the tests to pass on Github as well as locally.

      • -
      -
    • -
    • Server

      -
        -
      • Upgraded the nginx server to version 1.27.4

      • -
      • Added automated building of the kcworks-frontend docker image on push to each branch, just as with the main kcworks image.

      • -
      -
    • -
    -
    -
    -

    0.3.7-beta10 (2025-03-01)

    -
      -
    • Importer

      -
        -
      • Added email notifications to the owners of records imported using the new importer API.

      • -
      • Added a new API flag to disable these email notifications.

      • -
      -
    • -
    -
    -
    -

    0.3.6-beta9 (2025-02-25)

    -
      -
    • Importer

      -
        -
      • Added a new streamlined importer API.

      • -
      -
    • -
    • Remote user data service

      -
        -
      • Fixed bug where user profile data was not being updated because comparison with initial data was not being made correctly.

      • -
      • Improved handling of timeout errors when fetching data from the remote source.

      • -
      -
    • -
    • Documentation

      -
        -
      • Added documentation for the new importer API.

      • -
      • Improved documentation for other API endpoints and metadata fields.

      • -
      • Added documentation of InvenioRDM service architecture for developers.

      • -
      -
    • -
    • Email notifications

      -
        -
      • Improved formatting of moderation email notifications for first uploads/publications.

      • -
      -
    • -
    • Testing

      -
        -
      • Extensive improvements to the test suite, including new tests for the new importer API and remote user data service.

      • -
      • Added workflow to run tests on Github

      • -
      -
    • -
    • User data sync

      -
        -
      • Fixed several bugs in the user data sync process.

      • -
      • Added cli commands to fetch KCWorks user and group data

      • -
      -
    • -
    • Search provisioning

      -
        -
      • Fixed bugs in search provisioning and implemented new tests.

      • -
      -
    • -
    • Export menu

      -
        -
      • Fixed a bug preventing the export menu from working on the detail page.

      • -
      -
    • -
    • Large uploads

      -
        -
      • Raised max content length for large uploads.

      • -
      -
    • -
    • Account linking

      -
        -
      • Now can link existing KCWorks accounts to KC accounts on login based on email address, ORCID id, or KC username.

      • -
      -
    • -
    -
    -
    -

    0.3.5-beta8 (2025-01-10)

    -
      -
    • Dashboard works search

      -
        -
      • Fixed the bug that broke works searching from the dashboard.

      • -
      -
    • -
    -
    -
    -

    0.3.4-beta7 (2025-01-09)

    -
      -
    • Upload form collection selector

      -
        -
      • Fixed bug in collection selection modal where search results were always sorted by “newest” instead of “bestmatch” and so were useless for large result sets (original fix only worked in detail page)

      • -
      -
    • -
    • Documentation

      -
        -
      • Moved documentation from README.md and site/CHANGES.md into a static documentation site to be served by Github Pages.

      • -
      • Added more documentation for cli commands, metadata/identifiers/vocabularies, installation, and version control.

      • -
      -
    • -
    • Build system

      -
        -
      • Pinned the version of invenio-logging to less than 2.1.2 to avoid a webpack build conflict.

      • -
      -
    • -
    -
    -
    -

    0.3.3-beta6 (2024-12-18)

    -
      -
    • Names

      -
        -
      • Added the infrastructure to customize the division of users’ names into parts so that it can be divided as desired when, e.g., the user’s name is being auto-filled in the name fields of the upload form. This involves

        -
          -
        • a new “name_parts_local” field to the user profile schema. This field contains the user’s name parts if they have been modified within the KCWorks system. This is sometimes necessary when the user data synced from the remote user data service does not divide the user’s name correctly.

        • -
        • a cli command to update the user’s name parts.

        • -
        • a new “names” js module that contains functions to get the user’s full name, full name in inverted order, family name, and given name from the user’s name parts.

        • -
        • updates to the CreatibutorsField component to use the new “names” js module and the customized name parts if they are present in a user’s profile.

        • -
        -
      • -
      -
    • -
    • Detail page

      -
        -
      • Added missing aria-label properties for accessibility

      • -
      -
    • -
    • Collections

      -
        -
      • Fixed wording of empty results message for collection members search

        -
          -
        • Previously, the empty results message used “community” instead of “collection”.

        • -
        -
      • -
      • Tweaks to layout of collection detail page header

      • -
      -
    • -
    • Remote user data service

      -
        -
      • Fixed bug where user profile data was not being updated because comparison with initial data was not being made correctly. This means that, among other things, ORCID ids will now be added correctly when the user chooses “add self” on the upload form.

      • -
      -
    • -
    -
    -
    -

    0.3.2-beta5 (2024-12-11)

    -
      -
    • Added Bluesky sharing option to detail page

    • -
    • Fixed line wrapping of long values in record sidebar details

    • -
    • Added OpenGraph image metadata property to record detail page

      -
        -
      • This allows social media platforms to display the KCWorks logo instead of a random image they might find on the page.

      • -
      -
    • -
    -
    -
    -

    0.3.1-beta4 (2024-12-10)

    -
      -
    • Added sort options for publication date to record search

      -
        -
      • This allows users to sort records by the date they were published.

      • -
      • It also allows publication-date sorting in API requests to the search API. Among other things, this allows users’ KC profiles to display records in publication date order.

      • -
      -
    • -
    • Community selection modal bug fixes

      -
        -
      • This affects the modal that appears both during record submission on the upload form and during collection management on the detail page.

      • -
      • Fixed the sort order of search results in the modal. These were being sorted by record creation date, leading to a confusing sort order. It now sorts by “best match”. This allows, e.g., “Knowledge Commons” to find the main KC collection.

      • -
      • Also fixed the handling of ‘/’ in the search query string. This allows, e.g., “ARLIS/NA” to find the ARLIS/NA collection, where previously it would produce an error.

      • -
      -
    • -
    -
    -
    -

    0.3.0-beta3 (2024-11-30)

    -
      -
    • Record detail page

      -
        -
      • Added ui for collection management

        -
          -
        • A new menu appears in the detail page sidebar when a user has permission to edit a record. This -allows users to manage the record’s collections right from the detail page.

        • -
        • With this menu users can now

          -
            -
          • submit a request to have an existing published record added to a collection.

          • -
          • add a record to multiple collections

          • -
          • remove a record from some or all of its collections

          • -
          • view pending collection submissions for the record

          • -
          -
        • -
        • change which collection appears as the primary collection for the record (i.e., the collection whose logo appears in the record’s detail page sidebar)

        • -
        -
      • -
      • Refactored record management menu

      • -
      • Refactored all sidebar menus (including the record management menu) to allow accessible -keyboard navigation

      • -
      • Fixed display of event metadata

      • -
      • Added display for work doi as well as version doi

        -
          -
        • Each record has at least two DOIs: a work DOI and a version DOI. The work DOI is the DOI for the record as a whole. It always points to the most recent version of the work, even if the user creates new versions in the future. The other identifier is the version DOI, which will always point to the specific version of the work that the user is currently viewing. Previously, only the version DOI was displayed, which could be confusing if the user created a new version of the work.

        • -
        -
      • -
      -
    • -
    • Upload form

      -
        -
      • Added proper messages to collections widget for published records

        -
          -
        • since collections for published records are now managed from the detail page, the collections widget now displays messages to users pointing them to the detail page to manage collections.

        • -
        -
      • -
      • Added clearer titles to form when editing an existing record -or creating a new version

        -
          -
        • Previously, the form would display “Editing Published Record” both when editing the metadata of an existing published version and when creating a new version. The header now displays “Creating New Version” when creating a new version, and “Editing Published Record” when editing the metadata of an existing published version.

        • -
        -
      • -
      • Changed default publisher from “unknown” to “Knowledge Commons”

        -
          -
        • Previously, the default publisher was “unknown”. This was especially confusing for resource types where the publisher field is hidden on the upload form. Now, the default publisher is “Knowledge Commons”.

        • -
        -
      • -
      -
    • -
    • Solved collection links bug with custom routes

      -
        -
      • This is a back-end technical fix that should not be visible to users.

      • -
      -
    • -
    -
    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/cli_commands.html b/docs/build/cli_commands.html deleted file mode 100644 index 7dbc7495c..000000000 --- a/docs/build/cli_commands.html +++ /dev/null @@ -1,406 +0,0 @@ - - - - - - - - - CLI Commands - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    -
    -

    CLI Commands

    -
    -

    Running Invenio CLI Commands

    -

    InvenioRDM includes a number of CLI commands that can be run from the command line. These are invoked using the invenio command followed by the command name and any arguments. For example, to run the invenio users create command, you would use the following command:

    -
    invenio users create <email> --password <password>
    -
    -
    -

    For a list of all available CLI commands, run the following command:

    -
    invenio --help
    -
    -
    -

    Note that the invenio command wraps the underlying flask CLI command, so any command that can be run with flask can also be run with invenio.

    -
    -
    -

    Running CLI Commands in the KCWorks Container

    -

    Since the main KCWorks processes are run in docker containers, you will need to run the CLI commands inside the ui container (not the worker or api containers).

    -

    To run a CLI command in the KCWorks container during local development, you can use the following command:

    -
    docker exec -it kcworks-ui bash
    -invenio <command> <arguments>
    -
    -
    -

    On the staging and production instances, the container name is generated dynamically whenever the service is deployed. You can find the correct name by running docker ps | grep ui command. Then run the CLI command inside that container:

    -
    docker exec -it <container-name> bash
    -invenio <command> <arguments>
    -
    -
    -
    -
    -

    KCWorks Custom CLI Commands

    -

    KCWorks includes a number of custom CLI commands that are not part of the core InvenioRDM system. Further documentation can be found by running any command with the --help option.

    -
      -
    • invenio importer

      -
        -
      • provided by the invenio-record-importer-kcworks package

      • -
      • bulk imports records into the KCWorks instance.

      • -
      • this provides the sub-commands:

        -
          -
        • invenio importer serialize: serializes records from the legacy CORE database export into a JSON file suitable for import into the KCWorks instance.

        • -
        • invenio importer load: loads serialized records from a JSON file into the KCWorks instance.

        • -
        • invenio importer read: reads records from the data to be imported into the KCWorks instance.

        • -
        • invenio importer create-user: creates a KCWorks user linked to a KC user.

        • -
        • invenio importer count-records: counts the number of records in the data to be imported.

        • -
        • invenio importer delete-records: deletes records from the KCWorks instance.

        • -
        • invenio importer create-stats: creates usage stats aggregations for the imported records to correspond to the records’ usage before import.

        • -
        • invenio importer aggregations: aggregates the synthetic usage events for the imported records to produce usage stats for the imported records.

        • -
        -
      • -
      -
    • -
    • invenio kcworks-index destroy

      -
        -
      • provided by the main KCWorks package (kcworks/site/cli.py)

      • -
      • destroys search indices for the KCWorks instance that are not destroyed by the main KCWorks index destroy command. These are primarily the indices for storing usage events and aggregated usage data.

      • -
      • WARNING: This data only exists in the OpenSearch indices. It is not backed up by the database and will be lost if the indices are destroyed. Use this command with extreme caution.

      • -
      -
    • -
    • invenio kcworks-users name-parts

      -
        -
      • provided by the main KCWorks package (kcworks/site/cli.py)

      • -
      • either reads or updates how KCWorks will divide a user’s name into parts (e.g., first name, last name, middle name, etc.) for display in the UI and in creating record metadata.

      • -
      -
    • -
    • invenio user-data update

      -
        -
      • provided by the invenio-remote-user-data-kcworks package

      • -
      • updates a single user’s data from the remote KC user data service.

      • -
      • with the --groups option, updates a group collection’s metadata from the remote KC group data service.

      • -
      -
    • -
    -
    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/configuration.html b/docs/build/configuration.html deleted file mode 100644 index f82e6b348..000000000 --- a/docs/build/configuration.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - - - Configuration of InvenioRDM - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    -
    -

    Configuration of InvenioRDM

    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/customizations.html b/docs/build/customizations.html deleted file mode 100644 index 8c5979f73..000000000 --- a/docs/build/customizations.html +++ /dev/null @@ -1,1085 +0,0 @@ - - - - - - - - - Customizations to InvenioRDM - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    -
    -

    Customizations to InvenioRDM

    -
    -

    Template Customizations

    -
    -

    Page templates

    -
    -
    -

    Email templates

    -

    Custom email templates are located in site/kcworks/templates/semantic-ui/invenio_notifications. These override the default templates provided by InvenioRDM, and include both html and plaintext versions of each email, as well has markdown templates for other notification backends.

    -

    Additional email templates are added for KCWorks-specific email types.

    -
      -
    • user-first-record.create.jinja: sent to KCWorks moderators when a user has created their first record.

    • -
    • user-first-record.publish.jinja: sent to KCWorks moderators when a user’s first record is published.

    • -
    -
    -
    -
    -

    Record Detail Page Customizations

    -
    -

    Modular Framework (invenio-modular-detail-page)

    -
    -
    -

    Overrides in the KCWorks Package (kcworks/site)

    -
    -
    -
    -

    Deposit Form Customizations

    -
    -

    Modular Framework (invenio-modular-deposit-form)

    -
    -
    -

    Overrides in the KCWorks Package (kcworks/site)

    -
    -
    -
    -

    Collections

    -
    -

    Collections for KC Groups (invenio-group-collections-kcworks)

    -
    -
    -
    -

    Record Permissions

    -
    -

    Per-field editing permissions

    -

    KCWorks adds the ability to set per-field editing permissions for record owners. This is implemented by a custom service component (``kcworks.services.records.components.PerFieldPermissionsComponent`) that runs during record modification and selectively blocks edits to certain fields. Attempts to edit restricted fields will raise a ValidationError with a message indicating that the field is restricted.

    -

    The component runs during the update_draft and publish record operations. It looks at which fields have been modified from the previous version of the record (the draft if the record is not yet published, or the published record if it is published) and checks to see if the current user has permission to edit the field in question. If not, it raises a ValidationError with a message indicating that the field is restricted.

    -
    -

    Per-field permissions configuration

    -

    The permissions are configured in the invenio.cfg file using the RDM_RECORDS_PERMISSIONS_PER_FIELD variable like this:

    -
    RDM_RECORDS_PERMISSIONS_PER_FIELD = {
    -    "default": {
    -        "custom_fields.kcr:commons_domain": "community_moderators",
    -    },
    -    "sample_community": {
    -        "custom_fields.kcr:commons_domain": "community_moderators",
    -    }
    -}
    -
    -
    -

    The default key is used to configure the permissions for all records that do not have a specific community configuration. Other keys are the URL slugs for specific communities and are used to configure the permissions for records in specific communities. These community-specific configurations are optional but take precedence over the default configuration. If no community-specific configuration is found, the default configuration will be used. If no default configuration is found, per-field permissions will only be applied to records published to a community that has a community-specific configuration.

    -

    This configuration would be for a community with the URL slug sample_community. The kcr:commons_domain field is being restricted to moderators for this community.

    -
    -
    -

    Enabling per-field permissions

    -

    In order to enable per-field permissions, the PerFieldPermissionsComponent must be added to the RDM_RECORDS_SERVICE_COMPONENTS config variable.

    -
    RDM_RECORDS_SERVICE_COMPONENTS = [
    -    RDM_RECORDS_SERVICE_COMPONENTS*,
    -    "kcworks.services.records.components.PerFieldPermissionsComponent",
    -]
    -
    -
    -
    -
    -

    Which community’s permissions apply?

    -

    Since KCWorks records can be included in multiple communities, the per-field permissions component needs to know which community’s permissions to apply. There are two controls for this:

    -
      -
    1. The default display community for the record is the one whose permissions are applied. This is the community whose id is stored in parent.communities.default field of the record.

    2. -
    3. The default display community can be set as one of the restricted fields for the record.

    4. -
    -

    So if a record is included in the romantic_literature community, and that community is set as the default community for the record, then the permissions applied will be those of the romantic_literature community. If the romantic_literature community has no per-field permissions configured, then the default permissions will be used. If no default permissions are configured, then the record will be unrestricted.

    -

    If the romantic_literature community’s per-field permissions restrict changing the parent.communities.default field, then the record owner will not be able to remove the record from the romantic_literature community or change the default community for the record. The record can only be removed from the community, or its default community changed to another community, by an owner, manager, or curator of the romantic_literature community.

    -
    -

    [!Note] -If a community has per-field permission restrictions configured, this will be displayed in the user interface when the record owner submits it to the community.

    -
    -
    -

    [!Note] -We should probably add a one-time notification to all record owners if/when the community’s per-field permissions are changed. They should be allowed a grace period to update their records before the permissions are enforced.

    -
    -
    -
    -
    -
    -

    Notifications

    -
    -

    In-app notifications

    -

    A user’s unread notifications are tracked in the user’s profile record.

    -
    -
    -

    Content moderation notifications

    -
    -

    User-first-record notifications

    -

    Emails are sent to the KCWorks moderators when a user creates their first draft and publishes their first record. This is implemented using

    -
      -
    • a custom service component for the RDMRecord service (kcworks.services.notifications.services.FirstRecordCreatedNotificationService) that runs during draft creation and publication and

      -
        -
      • checks whether the user has any other drafts or published records.

      • -
      • if not, adds a NotificationOp to the unit of work for the record operation to emit a notification of the type “user-first-record.create” or “user-first-record.publish”.

      • -
      -
    • -
    • two custom notification builder classes (kcworks.services.notifications.builders.FirstRecordPublishedNotificationBuilder and kcworks.services.notifications.builders.FirstRecordCreatedNotificationBuilder) that build the notifications.

      -
        -
      • these builders define the notification recipients using a custom ModeratorRoleRecipient generator (kcworks.services.notifications.generators.ModeratorRoleRecipient) and sends the notification to all users with the role defined in the NOTIFICATIONS_MODERATOR_ROLE config variable.

      • -
      • they also define the notification backends to be used for sending the notification. In this case, a custom EmailBackend (kcworks.services.notifications.backends.EmailBackend) that sends email via the Flask-Mail extension.

      • -
      -
    • -
    • custom email templates for the notifications, located at site/kcworks/templates/semantic-ui/invenio_notifications/.

    • -
    -
    -
    -
    -

    Notifications for import API record owners

    -

    The streamlined import API sends notifications to the owners of the records being imported. These notifications are implemented by the invenio-record-importer-kcworks package. They are configured using the RECORD_IMPORTER_COMMUNITIES config variable, like this:

    -
    RECORD_IMPORTER_COMMUNITIES = {
    -    "sample_community": {
    -        "email_subject_register": "Your KCWorks Record is Ready",
    -        "email_template_register": "welcome_sample_community",
    -    }
    -}
    -
    -
    -

    This configuration would be for a community with the URL slug sample_community. The email_subject_register value sets the subject line for the email notification sent to the record owners. The email_template_register value sets the template to use for the email notification. The template must be located in the templates/security/email directory of the KCWorks instance directory.

    -
    -

    [!Note] -These notifications will only be sent for records imported using the streamlined import API. They will not be sent for records imported using the old importer API.

    -
    -
    -
    -
    -

    Integrations with KC

    -
    -

    User Data Sync (invenio-remote-user-data-kcworks)

    -

    User data is synced uni-directionally from KC to KCWorks. A user’s data is synced with KC when

    -
      -
    1. the user’s SAML authentication info is first saved in KCWorks

    2. -
    3. the user logs into KCWorks

    4. -
    5. a webhook signal is received by KCWorks from KC

    6. -
    -
    -
    -

    KC Search Provisioning (invenio-remote-api-provisioner)

    -
    -
    -

    SAML Authentication

    -
    -
    -
    -

    Metadata Schema Customizations

    -

    The default InvenioRDM metadata schema is defined in the invenio-rdm-records package and documented here. It also includes a number of optional metadata fields which have been enabled in KCWorks, documented here.

    -

    Beyond these InvenioRDM fields, KCWorks adds a number of custom metadata fields to the schema using InvenioRDM’s custom field mechanism. These are all located in the top-level custom_fields field of the record metadata. They are prefixed with two different namespaces:

    -
      -
    • kcr: custom fields that are used to store data from the KC system. These fields may be used for new data, but are not required.

    • -
    • hclegacy: custom fields that are used to store data from the legacy CORE database. These fields must not be used for new data.

    • -
    -
    -

    Notes about Implementation of Core InvenioRDM Fields

    -
    -

    metadata.subjects

    -

    Note that KCWorks employs the FAST controlled vocabulary (https://www.oclc.org/research/areas/data-science/fast.html) for the subjects field, complemented by the Homosaurus vocabulary (https://homosaurus.org/).

    -

    The FAST vocabulary is divided into a number of sub-vocabularies called “facets”, allowing more efficient searching and less ambiguity in the subject headings. FAST subjects in the metadata.subjects array must include the complete WorldCat url for the subject heading, the standard human-readable label, and a scheme including “FAST” followed by a hyphen and the FAST facet name in lowercase: i.e., one of

    -
      -
    • “FAST-topical”

    • -
    • “FAST-geographic”

    • -
    • “FAST-corporate”

    • -
    • “FAST-formgenre”

    • -
    • “FAST-event”

    • -
    • “FAST-meeting”

    • -
    • “FAST-personal”

    • -
    • “FAST-title”

    • -
    • “FAST-chronological”

    • -
    -

    You can search the FAST subject headings and their corresponding WorldCat urls here. The OCLC also provides helpful tools such as assignFAST, which suggests FAST subject headings based on a string (https://fast.oclc.org/assignfast/) and a converter from LCSH subject headings to FAST subject (http://fast.oclc.org/lcsh2fast).

    -

    Subject from the Homosaurus vocabulary must similarly include the complete homosaurus.org url as the id, the standard human-readable label as the subject, and a scheme with the value “Homosaurus”. The Homosaurus subject headings can be searched here.

    -

    Example:

    -
    {
    -    "subjects": [
    -        {
    -            "id": "http://id.worldcat.org/fast/123456",
    -            "subject": "Art History",
    -            "scheme": "FAST-topical"
    -        },
    -        {
    -            "id": "https://homosaurus.org/v3/homoit0000669",
    -            "subject": "Intersex variations",
    -            "scheme": "Homosaurus"
    -        }
    -    ]
    -}
    -
    -
    -
    -
    -

    metadata.creators/metadata.contributors

    -

    Note that the KC username of a creator or contributor may be stored in the person_or_org.identifiers array of the creator or contributor object with the scheme kc_username.

    -

    Users are also strongly encouraged to include an ORCID identifier in the person_or_org.identifiers array with the scheme orcid.

    -
    -

    [!Note] -The KC username is the primary link between a KCWorks record and a KC user. If you want a work to be associated with a KC user, you must include the KC username in creator or contributor object.

    -
    -

    Example:

    -
    {
    -    "person_or_org": {
    -        "identifiers": [
    -            {
    -                "scheme": "kc_username",
    -                "identifier": "jdoe"
    -            },
    -            {
    -                "scheme": "orcid",
    -                "identifier": "0000-0000-0000-0000"
    -            }
    -        ]
    -    }
    -}
    -
    -
    -
    -
    -
    -

    KCWorks Custom Fields (kcworks/site/metadata_fields)

    -
    -

    kcr:ai_usage

    -

    Type: Object[boolean, string]

    -

    This field stores data about any use of generative AI in the production of the record.

    -

    Example:

    -
    {
    -    "kcr:ai_usage": {
    -        "ai_used": true,
    -        "ai_description": "This paper was edited using generative AI editing software."
    -    }
    -}
    -
    -
    -
    -
    -

    kcr:media

    -

    Type: Array[string]

    -

    This field stores a list of media or materials involved in the creation of the record. This field is used to store free-form user-defined descriptors of the media or materials and does not impose any controlled vocabulary.

    -

    Example:

    -
    {
    -    "kcr:media": ["watercolor", "found objects", "audio recordings"]
    -}
    -
    -
    -
    -
    -

    kcr:commons_domain

    -

    Type: string

    -

    This field stores the KC organizational (Commons) domain associated with the KCWorks record, if any. The record should also be placed in the KCWorks collection associated with this organization.

    -

    Example:

    -
    {
    -    "kcr:commons_domain": "arlisna.hcommons.org"
    -}
    -
    -
    -
    -
    -

    kcr:chapter_label

    -

    Type: string

    -

    This field stores the label of the chapter associated with the KCWorks record, if any. This allows us to differentiate between a simple chapter label (e.g. “Chapter 1”) and a more substantive title for the same chapter (e.g., “The Role of AI in Modern Art”).

    -

    Example:

    -
    {
    -    "kcr:chapter_label": "Chapter 1"
    -}
    -
    -
    -
    -
    -

    kcr:content_warning

    -

    Type: string

    -

    This field stores an optional content warning for the KCWorks record. This is used to flag the record for KCWorks users so that they can be aware of potentially problematic content in the record. This field is not to be used for content moderation by KCWorks moderators or admins. It is only to be used voluntarily and as desired by the record submitter.

    -

    Example:

    -
    {
    -    "kcr:content_warning": "This work contains detailed accounts of abuse that may be distressing to some readers."
    -}
    -
    -
    -
    -
    -

    kcr:course_title

    -

    Type: string

    -

    This field stores the title of the course associated with the KCWorks record. It is intended primarily for use with syllabi and instructional materials.

    -

    Example:

    -
    {
    -    "kcr:course_title": "Introduction to Modern Art"
    -}
    -
    -
    -
    -
    -

    kcr:degree

    -

    Type: string

    -

    This field stores the educational degree (e.g., PhD, DPhil, MA, etc.) associated with the KCWorks record. It is intended primarily for use with theses and dissertations.

    -

    Example:

    -
    {
    -    "kcr:degree": "PhD"
    -}
    -
    -
    -
    -
    -

    kcr:discipline

    -

    Type: string

    -

    This field stores the academic discipline associated with the KCWorks record. It is intended primarily for use with theses, dissertations, and other educational artifacts. It is not intended as a general-purpose field for describing the subject matter of the KCWorks record. For that, you should use the metadata.subjects and kcr:user_defined_tags fields.

    -

    This field is intended to complement the thesis:university and kcr:institution_department fields.

    -

    This field is not constrained by any controlled vocabulary.

    -

    Example:

    -
    {
    -    "kcr:discipline": "Latin American Literature"
    -}
    -
    -
    -
    -
    -

    kcr:edition

    -

    Type: string

    -

    This field stores a descriptor for the edition of the KCWorks record, if any.

    -

    Example:

    -
    {
    -    "kcr:edition": "Second Edition"
    -}
    -
    -
    -
    -
    -

    kcr:meeting_organization

    -

    Type: string

    -

    This field stores the name of the organization associated with the meeting or conference associated with the KCWorks record. It is intended primarily for use with conference papers, presentations, proceedings, etc.

    -

    Example:

    -
    {
    -    "kcr:meeting_organization": "American Association of Art Historians"
    -}
    -
    -
    -
    -
    -

    kcr:project_title

    -

    Type: string

    -

    This field stores the title of a project for which the KCWorks record was created. It can be used flexibly for, e.g., grant-funded projects, research projects, artistic projects, etc.

    -

    Example:

    -
    {
    -    "kcr:project_title": "Kingston Poetry Residency, 2024"
    -}
    -
    -
    -
    -
    -

    kcr:publication_url

    -

    Type: string (URL)

    -

    This field stores the URL of the publication associated with the KCWorks record. It is not the URL of the KCWorks record itself or of the work it contains. For example, if the KCWorks record contains a journal article, it would not hold the URL for the published journal article. It is intended to hold the URL of the publication as a whole that the KCWorks record is based on or is a part of. So it might hold the main URL for the journal in which the article was published, or the main URL for the book in which the chapter was published, etc.

    -

    This string must be a valid URL.

    -

    Example:

    -
    {
    -    "kcr:publication_url": "https://www.example.com/publication/123456"
    -}
    -
    -
    -
    -
    -

    kcr:sponsoring_institution

    -

    Type: string

    -

    This field stores the name of the institution that sponsored the KCWorks record. One intended use is for unpublished materials such white papers that were sponsored or commissioned by an institution. The field may also be used for the institution hosting a conference or workshop associated with the KCWorks record (as distinct from the organization that sponsored the event).

    -

    Note that this field is not intended for the degree-granting institution associated with a thesis or dissertation. That institution’s title should be stored in the thesis:university field.

    -

    Example:

    -
    {
    -    "kcr:sponsoring_institution": "University of Toronto"
    -}
    -
    -
    -
    -
    -

    kcr:submitter_email

    -

    Type: string (email address)

    -

    This field stores the email address of the submitter of the KCWorks record. It must be a valid email address.

    -

    Example:

    -
    {
    -    "kcr:submitter_email": "john.doe@example.com"
    -}
    -
    -
    -
    -
    -

    kcr:submitter_username

    -

    Type: string

    -

    This field stores the KC username of the submitter of the KCWorks record. This should be used even if the submitter is also a contributor to the KCWorks record and has included the same username in the metadata.creators.person_or_org.identifiers array.

    -

    Example:

    -
    {
    -    "kcr:submitter_username": "jdoe"
    -}
    -
    -
    -
    -
    -

    kcr:institution_department

    -

    Type: string

    -

    This field stores the institutional department in which a thesis, dissertation, or other educational artifact was produced. It is intended to complement the thesis:university field, which stores the degree-granting institution.

    -

    Example:

    -
    {
    -    "kcr:institution_department": "Art History"
    -}
    -
    -
    -
    -
    -

    kcr:book_series

    -

    Type: Object[string, string]

    -

    This field stores the title of a series that contains the KCWorks record, along with the optional volume number of the work within the series.

    -

    Example:

    -
    {
    -    "kcr:book_series": {
    -        "series_title": "The Complete Works of Jane Austen",
    -        "series_volume": "Volume 1"
    -    }
    -}
    -
    -
    -
    -
    -

    kcr:user_defined_tags

    -

    Type: Array[string]

    -

    This field stores a list of user-defined tags for the KCWorks record. Unlike the metadata.subjects field, these tags are not constrained by any controlled vocabulary. Items should be free-form strings that describe the KCWorks record in a way that is not covered by the metadata.subjects field.

    -
    -

    [!Note] -The kcr:user_defined_tags field is intended to supplement the metadata.subjects field, not as the primary means of describing the KCWorks record’s subject matter. Assigning proper metadata.subjects entries allows for much more effective search and discovery of the KCWorks record.

    -
    -

    Example:

    -
    {
    -    "kcr:user_defined_tags": ["Ukranian refugees", "Migrants in Europe"]
    -}
    -
    -
    -
    -
    -

    kcr:commons_search_recid (system field)

    -

    This field is used to store the persistent identifier for the KCWorks record in the KC central search index.

    -
    -

    [!Warning] -This field is automatically generated by the invenio-remote-api-provisioner service when a KCWorks record is published. It must not be set by the user.

    -
    -
    -
    -

    kcr:commons_search_updated (system field)

    -

    Type: string (ISO 8601 datetime string)

    -

    This field stores the date and time when the KCWorks record was last updated in the KC central search index.

    -
    -

    [!Warning] -This field is automatically generated by the invenio-remote-api-provisioner service when a KCWorks record is published. It must not be set by the user.

    -
    -
    -
    -
    -

    HC Legacy Custom Fields

    -

    The hclegacy namespace is used for custom fields that are used to store data from the legacy CORE database. These fields should not be used for new data.

    -
    -

    custom_fields.hclegacy:groups_for_deposit

    -

    Type: Array[Object[string, string]]

    -

    This field is used to store the groups to which a legacy CORE record belonged before import into KCWorks. It was used to create corresponding KCWorks collections during migration.

    -

    Example:

    -
    {
    -    "hclegacy:groups_for_deposit": [
    -        {
    -            "group_name": "Group Name",
    -            "group_identifier": "Group Identifier"
    -        }
    -    ]
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:collection

    -

    Type: string

    -

    This field is used to store the org collection to which a legacy CORE record belonged before import into KCWorks. It was used to create corresponding KCWorks org collections during migration.

    -

    Example:

    -
    {
    -    "hclegacy:collection": "Collection Name"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:committee_deposit

    -

    Type: integer

    -

    This field is used to store the committee deposit number for a legacy CORE record. It was not used during migration and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:committee_deposit": 123456
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:file_location

    -

    Type: string

    -

    This field is used to store the relative path the the file for a legacy CORE record. It was not used during migration and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:file_location": "/path/to/file.pdf"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:file_pid

    -

    Type: string

    -

    This field is used to store the persistent identifier for the file for a legacy CORE record. It was not used during migration and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:file_pid": "hc:123456"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:previously_published

    -

    Type: string

    -

    This field is used to store the previously published status for a legacy CORE record. It was not used during migration and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:previously_published": "true"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:publication_type

    -

    Type: string

    -

    This field is used to store the publication type for a legacy CORE record. It was used during migration to help determine the KCWorks resource type of the record. It is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:publication_type": "Journal Article"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:record_change_date

    -

    Type: string (ISO 8601 datetime string)

    -

    This field is used to store the date of the last change to a legacy CORE record. It was not used during migration to KCWorks and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:record_change_date": "2024-01-01T00:00:00Z"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:record_creation_date

    -

    Type: string (ISO 8601 datetime string)

    -

    This field is used to store the date of the creation of a legacy CORE record. It was not used during migration because InvenioRDM does not allow overriding of the record creation date. It is only preserved for historical purposes and should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:record_creation_date": "2024-01-01T00:00:00Z"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:record_identifier

    -

    Type: string

    -

    This field is used to store the internal system identifier for a legacy CORE record. It was not used during migration and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:record_identifier": "1001634-1263"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:submitter_org_memberships

    -

    Type: array[string]

    -

    This field is used to store the organizations to which a legacy CORE record’s submitter belonged before import into KCWorks. It was used to create corresponding KCWorks org collections during migration and assign the work to those org collections.

    -

    Example:

    -
    {
    -    "hclegacy:submitter_org_memberships": ["arlisna", "mla"]
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:submitter_affiliation

    -

    Type: string

    -

    This field is used to store the organizational affiliation of a legacy CORE record’s submitter at the time of import into KCWorks. It was not used during migration and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:submitter_affiliation": "University of Toronto"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:submitter_id

    -

    Type: string

    -

    This field is used to store the internal KC system user id of a legacy CORE record’s submitter. It was used during migration to assign ownership of the newly created record, and is preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:submitter_id": "123456"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:total_views

    -

    Type: integer

    -

    This field is used to store the total number of views for a legacy CORE record prior to import into KCWorks. It was used during migration to create KCWorks usage stats aggregations for the record. It is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:total_views": 123456
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:total_downloads

    -

    Type: integer

    -

    This field is used to store the total number of downloads for a legacy CORE record prior to import into KCWorks. It was used during migration to create KCWorks usage stats aggregations for the record. It is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:total_downloads": 123456
    -}
    -
    -
    -
    -
    -
    -
    -

    Bulk Record Import (invenio-record-importer-kcworks)

    -
    -
    -

    Forked Core Invenio Modules

    -
    -

    invenio-communities

    -
    -
    -

    invenio-rdm-records

    -
    -
    -

    invenio-records-resources

    -
    -
    -

    invenio-vocabularies

    -
    -
    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/developing.html b/docs/build/developing.html deleted file mode 100644 index d4396e2bc..000000000 --- a/docs/build/developing.html +++ /dev/null @@ -1,625 +0,0 @@ - - - - - - - - - Developing KCWorks - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    -
    -

    Developing KCWorks

    -
    -

    Version Numbering

    -

    KCWorks uses semantic versioning (https://semver.org/). When a new release is made, the version number should be incremented in the following files:

    -
      -
    • README.md

    • -
    • docs/source/README.md

    • -
    • docs/source/conf.py

    • -
    • site/pyproject.toml

    • -
    • site/kcworks/__init__.py

    • -
    -

    While in beta, the version number should be followed by a numbered -beta suffix: e.g., 0.3.3-beta6. This suffix should be updated continuously (without starting over again for minor releases) until version 1.0.0 is reached and KCWorks leaves beta.

    -

    Bug fixes and other changes that do not introduce new features (including changes to documentation, build processes, etc.) should be considered patch releases.

    -

    New features should be considered minor releases.

    -
    -
    -

    Version Control

    -
    -

    Git Branching Strategy

    -

    KCWorks employs a modified version of the Gitlab Flow branching strategy for version control. The repository has four persistent branches:

    -
      -
    • main is the default branch and is the reference point for active development. It will usually not be ready for production deployment.

    • -
    • staging is the branch that is deployed to the staging server. It is created from the main branch when changes are ready to be tested. No commits should be made directly to the staging branch except to merge changes from main.

    • -
    • production is the branch that is deployed to the development server. It is created from the staging branch when changes are ready to be deployed to the production server. No commits should be made directly to the production branch except to merge changes from staging.

    • -
    • gh_pages is the branch that is used to generate the static documentation site for KCWorks on Github Pages. This branch is automatically updated from the main branch.

    • -
    -
    -

    Daily Development Workflow

    -

    When a developer needs to make changes to the codebase, they should create a new temporary working branch from the main branch. This branch should be named descriptively, such as feature/new-feature or fix/fix-issue. Work in progress should be committed to this working branch until the developer is ready to merge the changes into the main branch.

    -

    Changes should be merged back into main as often as possible, and the temporary branches deleted. These merges should be performed when a developer is ready to deploy the changes to the staging server for testing. This should generally be done after the appropriate tests have been written and are passing. Merges should also represent a single completed change (feature or fix). Developers should, though, think in terms of small, incremental changes and merge often.

    -

    Merging to main should be done via pull request, and the merge only accepted if the newly added tests are present and passing. This ensures that the main branch is always in a deployable state and ready for incoming merges by other developers. Merges should be performed using the squash merge strategy (the equivalent of git merge --squash <branch>). This combines all of the incoming changes into a single commit, making the commit history cleaner and easier to read.

    -

    No commits should be made directly to the staging or production branches. All changes should be made to the main branch and then merged into staging and production via pull requests. This is especially important because changes pushed to staging and production branches will automatically trigger rebuilding of the stanging or production containers and the deployment of the updated containers to the respective servers.

    -
    -
    -
    -

    Commit strategy

    -

    Developers should make frequent commits to their working branch. These may be as small and granular as the developer wishes since many incremental commits allow easy rollback to specific points in the development history. Such commits should be given descriptive names and commit messages that would allow quick identification of the changes. These commits will be squashed into a single commit when merged into main.

    -

    Commits to the main branch should each represent a single completed change (feature or fix). We try to avoid wip commits in order to keep the commit history readable. So all of the changes for a single feature or fix should be squashed into a single commit when merged from a temporary working branch into main.

    -

    Commits to the main branch should be named with the feature or fix prefix and one or more labels for the aspect of the codebase that the changes address. For example, feature(upload-form): add a new upload form or fix(record-page): fix the problem with the record page. In general, maintenance changes should be considered fix commits unless they are part of a larger feature or add new functionality.

    -
    -
    -

    Tagging Releases

    -

    Whenever the KCWorks version number changes, that commit should be tagged with the new version number. This can be done by running the following command:

    -
    git tag -a <version-number> -m "Release <version-number>"
    -
    -
    -

    We do not create branches for each numbered release.

    -
    -
    -

    Git Submodules

    -

    KCWorks uses git submodules to manage dependencies. The submodules are located in the site/kcworks/dependencies folder. The submodules are cloned from the upstream repositories when the KCWorks instance is first created. They are updated from the upstream repositories when the KCWorks instance is updated.

    -

    Note that in some cases there are inter-dependencies between these submodules. For example, the invenio-record-importer-kcworks submodule has its own dependency on the invenio-group-collections-kcworks submodule. When cloning the KCWorks repository, you should not use the --recurse-submodules option because this will clone redundant copies of these inter-dependent submodules. Instead, you should clone the KCWorks repository and then initialize the submodules in a separate step with git submodule update --init. Likewise, when updating the KCWorks submodules, you should use the git submodule update --remote command without the --recursive option.

    -
    -
    -
    -

    Updating the running KCWorks instance with development changes

    -
    -

    Changes to html template files

    -

    Changes to html template files will be visible immediately in the running Knowledge Commons Works instance. You simply need to refresh the page in your browser.

    -

    If you add a new template file (including overriding an existing template file), you will need to collect the new file into the central templates folder and restart the uwsgi processes. This can be done by running the following command inside the web-ui container:

    -
    invenio collect -v
    -uwsgi --reload /tmp/uwsgi_ui.pid
    -
    -
    -

    Then refresh your browser.

    -
    -
    -

    Changes to invenio.cfg

    -

    Changes to the invenio.cfg file will only take effect after the instance uwsgi processes are restarted. This can be done by running the following command inside the web-ui container:

    -
    uwsgi --reload /tmp/uwsgi_ui.pid
    -
    -
    -

    Or you can restart the docker-compose project, which will also restart the uwsgi processes.

    -
    -
    -

    Changes to theme (CSS) and javascript files

    -
    -

    The basic build process (slow)

    -

    Invenio employs a build process for css and javascript files. Changes to these files will not be visible in the running Knowledge Commons Works instance until the build process is run. This can be done by running the following command inside the web-ui container:

    -
    bash ./scripts/build-assets.sh
    -
    -
    -
    -
    -

    Rebuilding changed files on the fly (fast but limited)

    -

    The problem is that this build process takes a long time to run, especially in the containers. For most tasks, you can instead run the following command to watch for changes to the files and automatically rebuild them:

    -
    invenio webpack run start
    -
    -
    -

    The file watching will continue until you stop it with CTRL-C. It will continue to occupy the terminal window where you started it. This means that you can see it respond and begin integrating changed files when it finds them. You can also see there any error or warning output from the build process–very helpful for debugging.

    -
    -

    [!Note] -The watch command will only pick up changes to files that already existed during the last Webpack build. If you add

    -
      -
    • a new javascript file

    • -
    • a new css (less) file

    • -
    • a new node.js package requirement -then you need to again run the basic (slow) build script to include it in the build process. -After that you can run invenio webpack run start again to pick up changes on the fly.

    • -
    -
    -
    -
    -
    -

    Adding new node.js packages to be included

    -

    Normally, the node.js packages to be included in a project are listed in that project’s package.json file. In the case of InvenioRDM, the package.json file is created dynamically by InvenioRDM each time the build process runs. So you cannot directly modify the package.json file in your instance folder. Instead, you must add the package to the package.json file in the InvenioRDM module that requires it. Unless you are creating a new stand-alone extension, this will mean adding the package to the webpack.py file in the knowledge-commons-works/sites/kcworks folder.

    -

    There you will find a WebpackThemeBundle object that defines your bundle of js and style files along with their dependencies. If I wanted to add the geopattern package to the project, I would add it to the dependencies dictionary in the WebpackThemeBundle object like this:

    -
    
    -theme = WebpackThemeBundle(
    -    __name__,
    -    "assets",
    -    default="semantic-ui",
    -    themes={
    -        "semantic-ui": dict(
    -            entry={
    -                "custom_pdf_viewer_js": "./js/invenio_custom_pdf_viewer"
    -                "/pdfjs.js",
    -            },
    -            dependencies={
    -                "geopattern": "^1.2.3",
    -            },
    -            aliases={
    -                /* ... */
    -            },
    -        ),
    -    },
    -)
    -
    -
    -

    If you add a new node.js package to the project, you will then need to run the build script inside the web-ui container to install it:

    -
    bash ./scripts/build-assets.sh
    -
    -
    -
    -
    -

    Changes to static files

    -

    Changes to static files like images will require running the collect command to copy them to the central static folder. This can be done by running the following command inside the web-ui container:

    -
    invenio collect -v
    -
    -
    -

    You will then need to restart the uwsgi processes or restart the docker-compose project as described above.

    -
    -
    -

    Changes to python code in the site folder

    -

    Changes to python code in the site folder should (like changes to template files) take effect immediately in the running Knowledge Commons Works instance, provided that the build-assets.sh script has been run since the last updated image was built. You simply need to refresh the page in your browser.

    -
    -

    Adding new entry points

    -

    Sometimes you will need to add new entry points to inform the Flask application about additional code you have provided. This is done via the setup.py file in the site folder. Once you have added the entry point declaration, you will need to re-install the kcworks package in the kcworks-ui, kcworks-api, and kcworks-worker container. This can be done by running the following command inside the each container:

    -
    cd /opt/invenio/src/site
    -pip install -e .
    -uwsgi --reload /tmp/uwsgi_ui.pid
    -
    -
    -

    If you have added js, css, or static files along with the entry point code, you will also need to run the collect and webpack build commands as described above and restart the docker-compose project.

    -

    Note that entry point changes may be overridden if you pull a more recent version of the kcworks docker image and restart the docker-compose project. Ultimately the entry point changes will have to be added to a new version of the kcworks docker image.

    -
    -
    -
    -

    Changes to external python modules (including Invenio modules)

    -

    Changes to other python modules (including Invenio modules) will require rebuilding the main kcworks container. Additions to the python requirements should be added to the Pipfile in the kcworks folder and committed to the Github repository. You should then request that the kcworks container be rebuilt with the additions.

    -

    In the meantime, required python packages can be installed directly in the kcworks-ui, kcworks-api, and kcworks-worker containers. Enter each container and then install the required package pip (not pipenv):

    -
    pip install <package-name>
    -
    -
    -
    -
    -
    -

    Digging deeper

    -

    What follows is a step-by-step walk through this process.

    -
    -

    [!Note] -These instructions do not support installation under Windows. Windows users should emulate a Linux environment using WSL2.

    -
    -
    -
    -

    Updating an Instance with Upstream Changes

    -

    If changes have been made to the upstream Knowledge Commons Works repository and the kcworks container, you will need to update your local instance to reflect those changes. This process involves pulling the changes from the upstream repository, pulling the latest version of the kcworks docker image, restarting the docker-compose project with recreated containers, and rebuilding the asset files.

    -
      -
    1. First, from the root knowledge-commons-works folder, pull the changes from the upstream git repository:

    2. -
    -
    git pull origin main
    -
    -
    -
      -
    1. Then pull the latest version of the kcworks docker image:

    2. -
    -
    docker pull monotasker/kcworks:latest
    -
    -
    -
      -
    1. Next, restart the docker-compose project with recreated containers:

    2. -
    -
    docker-compose --file docker-compose.yml stop
    -docker-compose --file docker-compose.yml up -d --build --force-recreate
    -
    -
    -
      -
    1. Clean up leftover containers and images:

    2. -
    -
    docker system prune -a
    -
    -
    -
    -

    [!Caution] -Make sure that you run this prune command while the containers are running. If you run it while the containers are stopped, you will delete the containers and images that you need to run the application, as well as volumes with stored data.

    -
    -
      -
    1. Rebuild the asset files with the following command:

    2. -
    -
    docker exec -it kcworks-ui bash
    -bash ./scripts/build-assets.sh
    -
    -
    -
      -
    1. Then refresh your browser to see the changes.

    2. -
    -
    -
    -

    Running automated tests

    -

    Automated tests (unit tests and integration tests) are run every time a commit is pushed to the knowledge-commons-works Github repo. You can (and should) also run the test suite locally.

    -

    There are currently three distinct sets of tests that have to be run separately: -(a) python tests run using invenio’s fixtures, -(b) javascript tests run separately using jest, -(c) Ghost Inspector tests that run on the deployed site (staging or production).

    -
    -

    Python tests

    -

    The python test suite includes (a) unit tests for back end code, (b) tests of ui views and api requests run with a client fixture. To run the unit tests and view/request tests, navigate to the root knowledge-commons-works/site folder and run

    -
    bash run_tests.sh
    -
    -
    -

    Note that you will need to have your local docker service running for these tests to work, since they use the docker-services-cli tool to start the required services.

    -
    -

    [!Note] -Ensure that you have stopped the docker-compose project for your local development instance before running the tests! Otherwise, you will get conflicts with the services that are started by the tests.

    -
    -
    -
    -

    Javascript tests

    -

    Pytest does not directly test custom javascript files or React components. In order to test these, navigate to the root knowledge-commons-works folder and run

    -
    npm run test
    -
    -
    -

    These tests are run using the jest test runner, configured in the packages.json file in the root knowledge-commons-works folder.

    -

    Note that these tests run using a local npm configuration in the knowledge-commons-works folder. Any packages that are normally available to InvenioRDM must be added to the local package.json configuration and will be installed in the local node_modules folder. Since this folder is not included in GIT version control, before you run the javascript tests you must ensure the required packages are installed locally by running

    -
    npm install
    -
    -
    -
    -
    -

    Ghost Inspector tests

    -

    The Ghost Inspector tests are run on the deployed site (staging or production). They run on a regular schedule and are used to ensure that the site is working as expected.

    -
    -

    [!Note] -At present, Ghost Inspector tests are not run automatically when a pull request is merged into the staging or production branches. This should be implemented in the future once deployment to the respective servers is fully automated.

    -
    -
    -
    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/doctrees/README.doctree b/docs/build/doctrees/README.doctree deleted file mode 100644 index 4ceb6542bf0eac6e95e71ac70c160d5c1e8ace39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3860 zcmdT{OK%*<5tc+R$>n27N|qA9qBBO|SVGKQK~e(4Kn{ka1Hq67`jJbFLGMiOc7r|L zlkOgJc@U5s41_@6Joy3n9r-JH{Db5#F?dC zeqqn$Lh9L&rKvV4cV*a2O;TiB`|{iJ>7UBC<&)62?8=$KCcF%Hz>x^4Qp3^;%13qB*oE%}?WwqQMH z&^ckYD5-gQR*YHLV%}RhE{yQ3>(FWd+QyHRcE=={xRuTS3$v$PcNi5>A+tQBKCypIR6sb#rXbk5&ST8YuC zT4MA&k{C%Bu_!T0v9Ynt%S#@4V^lOTHgeursizUsY2*Z}*9l8`CX>i=$C*vUFgo@m z1!{d{Cee2l(RDD43#q`NAuf{Id8QLi7rfxnvA*P5n)BDEkeeGPq4_#;*Us~7Scmjc z_))*1!5>03qELy$Gx0t_O#BSE5+4AwKga(={6E6~DKH~`DUN^@u!@ftB0Q{9N%X>l zuYe!qNAzs?V))`{%su;c>#JMO<~IE1huP3uv0=Nlq0PtrmJs@{Onz5HB}d;a3+`OD~(I}x3C@I2>=Gsn}Y&?&bS+)j_bh?GpY zc6=B;`J4mu0HM^0DpD~1_W0GCv(MiQ{me%bsrc||>(>91wz;2v|NZ?$VCgUWiFfD< z{iKTvYoWGGT)^Gdg3FuAvLLF5Qh`D{7t;||M4-%7&|Rye_P?>-6<_gjc-LE0M1@jh zbevl=MWLySZ_gXgRC#hIY_&W*#kQbSxf=#aVX3soT_N9TDRn^)n~r;rf`;C7&^4Qh zHQIBXmSO!XrV3Q@wp)q4v(TS%%~2PPEwM=%8i8k7j?H$hCWh<_Y`2SkXfo zD>vF~KxXaWF%I~zQVZ<64O>h#t{PIF`UAYh)LzJ9iog;e`Csw@KfP^?miujKz76Y+6$wH#!g3Ncu1U; z0pN_$_z@nDaBPBp^x?CY@aMozk`?hpnT!8LD;}B32(K614kh=KN(XX&Bz&fztnb+v zDU^Cqo@|Cg05Xfa-0U6@yPObm6ZYM;_G}glG&WT=H%y6!aKGa+3_kH63M93IqaIZI zdK)W~u*S8A2?i*ZAngkp@PQWYNl<9zzxu25~(M^KwA~=Q=M?dc!f`9 z1YTuWor*NSUX;L0Hs&ev_ZlV$&OMYoOu%&!^NdLqV^XKuTA6*&%-R5}n$$JzCaiIN zNpo=6tZNC97f_Tsl}HXBduFE`wFxuu0gM8)Jmz;)?Ubfo8khGlwWf(Fw5RzMqci5y zpRBS+Kx-hx*cK$`j@+9VEV2Wwm3umgPIWDa4@$ele(Jd#Xq~TNIFNSq0H}K+He1H(KUOy360%;^v z5&A^+*EvE;Q{~l-FgJzxfYu(L2uhq3VRsScm8{)FB3USKkY7`%nzej&fEOt>AHt5b z$i_x>nNzX8yF%=^`%4o0t=8(&{U!P6O4d^we7GvBIl%~kT3aEDI?6VEzyOkX1Dfr| zD?%LT-@*&ul;@}$_&7lY!e^R8rql|%lDkCS?#LC`x0{&|$u%XMZ>7`~ngU8wP1wrt QkrF#qV5)dq7USW60mSpu5C8xG diff --git a/docs/build/doctrees/cli_commands.doctree b/docs/build/doctrees/cli_commands.doctree deleted file mode 100644 index 637b8b75db822f1f9ce99421be524fbc5a4a4881..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20401 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 UW%F$uqO8Y$imc_;Zo0Mle^{3Ut^fc4 diff --git a/docs/build/doctrees/configuration.doctree b/docs/build/doctrees/configuration.doctree deleted file mode 100644 index f08139bae085abd431a520e02f513055ab8250b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2856 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 diff --git a/docs/build/doctrees/developing.doctree b/docs/build/doctrees/developing.doctree deleted file mode 100644 index ed0718e4ef71b7a34c5082b1bb56be965dd1e106..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37551 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—*PS*5 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 diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree deleted file mode 100644 index b43661746bce1528f6d0be4011255fdd950b1a35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5295 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 diff --git a/docs/build/doctrees/infrastructure.doctree b/docs/build/doctrees/infrastructure.doctree deleted file mode 100644 index 03681ef1d5f3ccb07678eeab48f1d5fd4a11fa22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2805 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 diff --git a/docs/build/doctrees/reference.doctree b/docs/build/doctrees/reference.doctree deleted file mode 100644 index b4df720f62a5aad6f5619fe940c68cd383c31cfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3535 zcmds4TWcIg7Pc*qq|s$0IkDGZ%jvLW;}C1cgs_BtSQg@!pja3un*>5=YPxHt3RPEi z>S9R?hUCEzLA|B-|Lkr8dEfm*`A+wA&n4QB=LiP6PMtc}?_Bgv@1H;JUaSA&o-2ja z=R=m~+T`3-aWgkrD7g03_tiV!RxhiEv2WR#Gr?xOir2uA38`|+b@f#h2gL5Ba>LpC z4aYMtjqaX{o>&(fUsVr9KlZ%ziZ5Kn{&POzkOkSq1fH9p@^ezYc=f7kELkrZczq=f zVn6K+6>D*QX5UG?sifxBNf@)Z#k{w296bCYKh|XK$mWeqG3P+UcTcmT`P$4wIX{e9 zc53;ActYIpY)V&^*b@(quZzR@@#yc4TQ`zSyUch$dct3DWl9R%=v13C#q%jY%1luh z?T*fjJ#`}(>_&~DBgk&t9u|2e?ui|7U#x|(*luDz588f9h<88IFSwTG`ID!~lUb5j z9qKxAcYcLo7C-2DOnSuOiFiOE5^o?b;!VW;kNCZX-`n`T1E0mawXa|mkMQhhW?nz` zkpecgtQ3oB{OMD{ljGL!nkuDhrseHm*!gM0F^9%`3%p{q+G)zdu{JiYq zBfQE~$fcepS#aJI@*lPD5SSiQzdiGR1MtL5Q2j)AJ7YMcM|(kuDNC2*b0Z7p?7&!lsIfRYEsBP#c^wP3|8T^>rIwY&!StX>%lI2QN>#m zW4tz=FI*m9kGs^QbtuwvDwYbAfkUe-Q)*av>LBu7L*a_ol=Mt`k+z)^8fOn?t@I@B zSY8_IQ$@vC9p8vsf~oG*UshO|ho(X=b6x@* zP$PkilenH4J%Nu1hs*&_K9T2@SdRl1yh-PzctZkFyLl+ev_l=DS`#DyXEjqKaIdD+ zc&6OXNu}cJLP1&IvoT62_o6!9jE4YZk#@D&Igq-N5ONv! z-G%n-JQZ>(6n+5jO=Sr8JFZ};vabV*+96P{)#v7zDwDBUXb&@iL7gG-O|c=$bqMkL zG?Y+5n_In(&6>a^&|@+hpYyJ8i~58M;}t$x5O|egO)1jKby@*4#hB-)-wT)^IQLL; zI|J8g$_pk{iY1eJYi;(yY)u4M)uicZmvN2j7qq&?&8C;2cmYMJbBW^csb_Y|(VMWg z9l$6+%cG?NHaRV7wBhYx(aJMSdrvDDwms~Ve^_OeTCOap@y2_9ZYMu|HbWC@&kyd3 z9qE@^*y7ssZyG}I;b3k{A$7fkivM)W-1Wz;LVR`l{&%ImDR@B#>1ZhQEzJ5 diff --git a/docs/build/genindex.html b/docs/build/genindex.html deleted file mode 100644 index a5d86f4d9..000000000 --- a/docs/build/genindex.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - - Index - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    -
    - -
    - -
    -
    - -
    -

    Index

    -
    -
    - -
    -
    -
    - - -
    -
    - - Made with Sphinx and @pradyunsg's - - Furo - -
    -
    - -
    -
    - -
    -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/in_depth.html b/docs/build/in_depth.html deleted file mode 100644 index 939e47d2e..000000000 --- a/docs/build/in_depth.html +++ /dev/null @@ -1,712 +0,0 @@ - - - - - - - - - In-depth Installation Instructions (NEEDS UPDATING) - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    -
    -

    In-depth Installation Instructions (NEEDS UPDATING)

    -
    -

    Install Python and Required Python Tools

    -
    -

    Ensure some version of python is installed

    -

    Most operating systems (especially MacOS and Linux) will already have a version of Python installed. You can proceed directly to the next step.

    -
    -
    -

    Install pyenv and pipenv

    -

    First install the pyenv tool to manage python versions, and the pipenv tool to manage virtual environments. (There are other tools to use for virtual environment management, but InvenioRDM is built to work with pipenv.)

    -

    Instructions for Linux, MacOS, and Windows can be found here: https://www.newline.co/courses/create-a-serverless-slackbot-with-aws-lambda-and-python/installing-python-3-and-pyenv-on-macos-windows-and-linux

    -
    -
    -

    Install and enable Python 3.9.16

    -

    Invenio’s command line tools require a specific python version to work reliably. Currently this is python 3.9.16. At the command line, first install this python version using pyenv:

    -
    pyenv install 3.9.16
    -
    -
    -

    Note: It is important to use cpython. Invenio does not support other python interpreters (like pypy) and advises against using anaconda python in particular for running the RDM application.

    -

    Just because this python version is installed does not guarantee it will be used. Next, navigate to the directory where you cloned the source code, and set the correct python version to be used locally:

    -
    cd ~/path/to/directory/knowledge-commons-works
    -pyenv local 3.9.16
    -
    -
    -
    -

    Install the invenio-cli command line tool

    -

    From the same directory Use pip to install the invenio-cli python package. (Do not use pipenv yet or create a virtual environment.)

    -
    pip install invenio-cli
    -
    -
    -
    -
    -
    -
    -

    Install Docker 20.10.10+ and Docker-compose 1.17.0+

    -
    -

    Linux

    -

    If you are using Ubuntu Linux, follow the steps for installing Docker and Docker-compose explained here: https://linux.how2shout.com/install-and-configure-docker-compose-on-ubuntu-22-04-lts-jammy/

    -

    You must then create a docker group and add the current user to it (so that you can run docker commands without sudo). This is required for the invenio-cli scripts to work, and it must be done for the same user that will run the cli commands:

    -
    sudo usermod --append --groups docker $USER
    -
    -
    -

    You will likely want to configure Docker to start on system boot with systemd.

    -
    -
    -

    MacOS

    -

    If you are using MacOS, follow the steps for installing Docker desktop explained here: https://docs.docker.com/desktop/install/mac-install/

    -

    You will then need to ensure Docker has enough memory to run all the InvenioRDM containers. In the Docker Desktop app,

    -
      -
    • click settings cog icon (top bar near right)

    • -
    • set the memory slider under the “Resources” tab manually to at least 6-8GB

    • -
    -

    Note: The environment variable recommended in the InvenioRDM documentation for MacOS 11 Big Sur is not necessary for newer MacOS versions.

    -
    -
    -

    Fixing docker-compose “not found” error

    -

    With the release of compose v2, the command syntax changed from docker-compose to docker compose (a command followed by a sub-command instead of one hyphenated command). This will break the invenio-cli scripts, which use the docker-compose command and you will receive an error asking you to install the “docker-compose” package.

    -

    One solution on Linux systems is to install Docker Compose standalone, which uses the old docker-compose syntax:

    -
    sudo curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
    -sudo chmod +x /usr/local/bin/docker-compose
    -
    -
    -

    Another approach is simply to alias the docker compose command to docker-compose in the configuration file for your command line shell (.bashrc, .zshrc, or whichever config file is used by your shell).

    -

    See further https://docs.docker.com/compose/install/other/

    -
    -
    -

    Docker log rotation

    -

    Regardless of your operating system, you should set up log rotation for containers to keep the size of logging files from getting out of control. Either set your default logging driver to “local” (which rotates log files automatically) or set logging configuration if you use the “json-file” logging driver. See https://docs.docker.com/config/containers/logging/configure/

    -
    -
    -

    Note about docker contexts

    -

    Make sure to always use the same Docker context to run all of the containers for InvenioRDM. See further, https://docs.docker.com/engine/context/working-with-contexts/

    -
    -
    -
    -

    Install Node.js and NVM

    -

    Currently InvenioRDM (v. 11) requires Node.js version 16.19.1. The best way to install and manage Node.js versions is using the nvm version manager. You can find instructions here: https://www.freecodecamp.org/news/node-version-manager-nvm-install-guide/

    -

    Once nvm is installed, install the required Node.js version and set it as the active version:

    -
    nvm install v16.19.1
    -nvm use 16.19.1
    -
    -
    -

    You may have other Node versions installed as well, so before a session working with Knowledge Commons Works it’s a good idea to make sure you’re using the correct version. On MacOS and Linux you can check -from the command line with

    -
    which node
    -
    -
    -
    -
    -

    Clone the knowledge-commons-works Code

    -

    Using GIT, clone this repository. You should then have a folder called knowledge-commons-works (unless you chose to name it something else) on your local computer.

    -
    -
    -

    Add and Configure an Environment File

    -
    -

    Standardized environment variables

    -

    For local development, this file must include the following variables with these values:

    -
    INVENIO_INSTANCE_PATH=/opt/invenio/var/instance
    -INVENIO_RECORD_IMPORTER_LOCAL_DATA_DIR=/
    -INVENIO_RECORD_IMPORTER_DATA_DIR=/opt/invenio/var/import_data
    -INVENIO_SEARCH_DOMAIN='search:9200'
    -INVENIO_SITE_UI_URL="https://localhost"
    -INVENIO_SITE_API_URL="https://localhost/api"
    -REDIS_DOMAIN='cache:6379'
    -INVENIO_SQLALCHEMY_DATABASE_URI="postgresql+psycopg2://kcworks:kcworks@db/kcworks"
    -POSTGRES_USER=kcworks
    -POSTGRES_DB=kcworks
    -
    -
    -

    The INVENIO_INSTANCE_PATH should be set to the full path of the instance directory where InvenioRDM will store its compiled files. Since KC Works runs inside containers, this is normally a standard folder inside the container file systems (/opt/invenio/var/instance). If you were to run InvenioRDM with the python/uwsgi processes installed on your local machine, this would be a folder inside your local virtual environment folder. For example, on MacOS this might be ~/.local/share/virtualenvs/{virtual env name}/var/instance/.

    -
    -
    -

    Variables for local credentials

    -

    Several variables hold random values used to secure the application, or hold passwords and email addresses supplied by the local developer:

    -
    INVENIO_CSRF_SECRET_SALT='..put a long random value here..'
    -INVENIO_SECURITY_LOGIN_SALT='..put a long random value here..'
    -INVENIO_SECRET_KEY=CHANGE_ME
    -POSTGRES_PASSWORD=???
    -PGADMIN_DEFAULT_EMAIL=???
    -PGADMIN_DEFAULT_PASSWORD=???
    -
    -
    -

    Random values for secrets like INVENIO_SECRET_KEY can be generated in a terminal by running

    -
    python -c 'import secrets; print(secrets.token_hex())'
    -
    -
    -
    -

    Additional environment variables with sensitive information

    -

    Additionally, you should add the following variables with the appropriate values obtained from the Commons administrators:

    -
    COMMONS_API_TOKEN=mytoken  # this must be obtained from the Commons administrators
    -COMMONS_SEARCH_API_TOKEN=mytoken  # this must be obtained from the Commons administrators
    -INVENIO_DATACITE_PASSWORD=myinveniodatacitepassword  # this must be obtained from the Commons administrators
    -
    -
    -

    You will also need to enter the following variable with a dummy value and then replace it with the actual value after the instance is set up. Once you have an administrative user, you can generate a token for that user in the KC Works admin ui and enter it here:

    -
    API_TOKEN=myapitoken
    -
    -
    -
    -
    -

    Additional required environment variables with paths on your local file system

    -

    The next variables refer to paths on your local file system that are used during local development to provide easy access to the source code of various python packages and KCWorks modules:

    -
    PYTHON_LOCAL_GIT_PACKAGES_PATH=/path/to/local/git/packages
    -PYTHON_LOCAL_SITE_PACKAGES_PATH=/path/to/local/virtual/environment/lib/python3.12/site-packages
    -
    -
    -

    PYTHON_LOCAL_GIT_PACKAGES_PATH is the parent directory that holds cloned packages that aren’t available via pip or that have been forked by us. If you are not working with the KCWorks custom modules locally, this can be set to the folder where you cloned the KCWorks code. Otherwise, it should be the path to the parent folder containing the git repositories for the forked Invenio modules and the extra KC Works modules.

    -

    PYTHON_LOCAL_SITE_PACKAGES_PATH is the path to the site-packages folder in your local virtual environment. This assumes that you have run pipenv install --dev --python=3.12 in your KCWorks project folder to install the python packages locally in a virtual environment.

    -
    -
    -
    -
    -

    Install the Invenio Python Modules

    -

    Navigate to the root knowledge-commons-works folder and run

    -
    pipenv install --dev --python=3.12
    -
    -
    -

    Note: This installation step will take several minutes.

    -

    This stage

    -
      -
    • creates and initializes a Python virtual environment using pipenv

    • -
    • locks the python package requirements

    • -
    • installs the Invenio python packages (with pipenv)

      -
        -
      • these packages are again installed under your virtual environment folder. On MacOS this is often ~/.local/share/virtualenvs/{virtual env name}/lib/python3.9/site-packages/. You will find several modules installed here with names that start with “invenio_”.

      • -
      -
    • -
    • installs the kcworks Python package (with pipenv)

      -
        -
      • alongside the Invenio packages you will also find a kcworks package containing any custom extensions to InvenioRDM defined in your knowledge-commons-works/sites/ folder

      • -
      -
    • -
    • installs required python dependencies (with pipenv)

    • -
    -
    -
    -

    Build and Configure the Containerized Services

    -
    -

    Build and start the containers

    -

    Make sure you are in the root knowledge-commons-works folder and then run

    -
    docker-compose up -d
    -
    -
    -

    This step will

    -
      -
    • build the docker image for the nginx web server (frontend) using ./docker/nginx/Dockerfile

    • -
    • pull remote images for other services: mq, search, db, cache, pgadmin, opensearch-dashboards

    • -
    • start containers from all of these images and mounts local files or folders into the containers as required in the docker-compose.yml and docker-services.yml files

    • -
    -
    -
    -

    Create and initialize the database, search indices, and task queue

    -

    Again, from the root knowledge-commons-works folder, run this command:

    -
    invenio-cli services setup
    -
    -
    -

    This step will

    -
      -
    • create the postgresql database and table structure

    • -
    • create Invenio admin role and assigns it superuser access

    • -
    • begin indexing with OpenSearch

    • -
    • create Invenio fixtures

    • -
    • insert demo data into the database (unless you add the –no-demo-data flag)

    • -
    -

    Note: If for some reason you need to run this step again, you will need to add the --force flag to the docker-compose command. This tells Invenio to destroy any existing redis cache, database, index, and task queue before recreating them all. Just be aware that performing this setup again with --force will destroy all data in your database and all OpenSearch indices.

    -
    -
    -

    Start the uwsgi applications and celery worker

    -

    Finally, you need to start the actual applications. Knowledge Commons Works is actually run as two separate applications: one providing an html user interface, and one providing a REST api and serving JSON responses. Each application is served to the nginx web server by its own uwsgi process. The nginx server begins automatically when the frontend docker container starts, but the uwsgi applications run on your local machine and need to be started directly.

    -

    These applications are also supported by a Celery worker process. This is a task queue that (with the help of the RabbitMQ docker container) frees up the python applications from being blocked by long-running tasks like indexing. The celery worker also runs on your local machine and must be started directly.

    -

    If you want to quickly start all of these processes in the background (as daemons), you can run the kcr-startup.sh script in the root knowledge-commons-works directory:

    -
    bash kcr-startup.sh
    -
    -
    -

    The processes will output request and error logging to files in the logs folder of your knowledge-commons-works folder.

    -

    To stop these processes, simply run

    -
    bash kcr-shutdown.sh
    -
    -
    -

    If you would like to view the real time log output of these processes, you can also start them individually in three separate terminals:

    -
    pipenv run celery --app invenio_app.celery worker --beat --events --loglevel INFO
    -
    -
    -
    pipenv run uwsgi docker/uwsgi/uwsgi_ui.ini --pidfile=/tmp/kcr_ui.pid
    -
    -
    -
    pipenv run uwsgi docker/uwsgi/uwsgi_rest.ini  --pidfile=/tmp/kcr_api.pid
    -
    -
    -

    These processes can be stopped individually by pressing CTRL-C

    -
    -
    -

    Create an admin user

    -

    From the command line, run these commands to create and activate the admin user:

    -
    pipenv run invenio users create <email> --password <password>
    -pipenv run invenio users activate <email>
    -
    -
    -

    If you want this user to have access to the administration panel in Invenio, you also need to run

    -
    pipenv run invenio access allow administration-access user <email>
    -
    -
    -
    -
    -
    -

    Use the application!

    -

    You should now be able to access the following:

    -
      -
    • The Knowledge Commons Works app (https://localhost)

    • -
    • The Knowledge Commons Works REST api (https://localhost/api)

    • -
    • pgAdmin for database management (https://localhost/pgadmin)

    • -
    • Opensearch Dashboards for managing search (https://localhost:5601)

    • -
    -
    -

    Controlling the Application Services

    -

    Once Knowledge Commons Works is installed, you can manage its services from the command line. Note: Unless otherwise specified, the commands below must be run from the root knowledge-commons-works folder.

    -
    -
    -

    Startup and shutdown scripts

    -

    The bash script kcr-startup.sh will start -- the containerized services (if not running) -- the celery worker -- the two uwsgi processes -It will also ensure that you have a .env file and copy your set your INVENIO_INSTANCE_PATH variable in that file to your local instance folder, matching the instance_path variable in your .invenio.private file.

    -

    Simply navigate to the root knowledge-commons-works folder and run

    -
    bash ./kcr-startup.sh
    -
    -
    -

    To stop the processes and containerized services, simply run

    -
    bash ./kcr-shutdown.sh
    -
    -
    -
    -
    -

    Controlling just the containerized services

    -

    If you want to stop or start just the containerized services (rather than the local processes), you can use the invenio cli:

    -
    invenio-cli services start
    -invenio-cli services stop
    -
    -
    -

    Or you can control them directly with the docker-compose command:

    -
    docker-compose up -d
    -docker-compose stop
    -
    -
    -

    Note that stopping the containers this way will not destroy the data and configuration which live in docker volumes. Those volumes persist as long as the containers are not destroyed. Do not use the docker-compose down command unless you want the containers to be destroyed.

    -
    -
    -

    View logging output for uwsgi processes

    -

    Activity and error logging for the two uwsgi processes are written to date-stamped files in the knowledge-commons-works/logs/ folder. To watch the live logging output from one of these processes, open a new terminal in your knowledge-commons-works folder and run

    -
    tail -f logs/uwsgi-ui-{date}.log
    -
    -
    -

    or

    -
    tail -f logs/uwsgi-api-{date}.log
    -
    -
    -
    -
    -

    View container logging output

    -

    The logging output (and stdout) can be viewed with Docker Desktop using its convenient ui. It can also be viewed from the command line using:

    -
    docker logs <image-name> -f
    -
    -
    -

    The names of the various images are:

    -
      -
    • nginx: kcworks-frontend-1

    • -
    • RabbitMQ: kcworks-mq-1

    • -
    • PostgreSQL: kcworks-db-1

    • -
    • OpenSearch: kcworks-search-1

    • -
    • Redis: kcworks-cache-1

    • -
    • OpenSearch Dashboards: kcworks-opensearch-dashboards-1

    • -
    • pgAdmin: kcworks-pgadmin-1

    • -
    -
    -
    -

    Controlling containerized nginx server

    -

    The frontend container is configured so that the configuration files in docker/nginx/ are bind mounted. This means that changes to those config files can be seen in the running container and enabled without rebuilding the container. To reload the nginx configuration, first enter the frontend container:

    -
    docker exec -it kcworks-frontend-1 bash
    -
    -
    -

    Then tell gninx to reload the config files:

    -
    nginx -s reload
    -
    -
    -

    You can also test the nginx config prior to reloading by running

    -
    nginx -t
    -
    -
    -

    Alternately, you can rebuild and restart the frontend container by running

    -
    docker-compose up -d --build frontend
    -
    -
    -
    -
    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/index.html b/docs/build/index.html deleted file mode 100644 index f3752080b..000000000 --- a/docs/build/index.html +++ /dev/null @@ -1,411 +0,0 @@ - - - - - - - - - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    -
    -

    Welcome to the Knowledge Commons Works technical documentation!

    -
    -

    Contents:

    - -
    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/infrastructure.html b/docs/build/infrastructure.html deleted file mode 100644 index b3362b350..000000000 --- a/docs/build/infrastructure.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - - - KCWorks Infrastructure - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    -
    -

    KCWorks Infrastructure

    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/installation.html b/docs/build/installation.html deleted file mode 100644 index 949a4703e..000000000 --- a/docs/build/installation.html +++ /dev/null @@ -1,479 +0,0 @@ - - - - - - - - - Installation - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    -
    -

    Installation

    -
    -

    Quickstart

    -

    These instructions allow you to run Knowledge Commons Works for local development. The app source files are copied onto your system, but the Flask application and other services (database, search, etc.) are run in Docker containers. The application is served to your browser by an nginx web server running in a separate container.

    -

    First you will need to have the correct versions of Docker (20.10.10+ with Docker Compose 1.17.0+) and Python (3.12.0+ with pipenv).

    -

    From there, installation involves these steps. Each one is further explained below, but here is a quick reference:

    -
    -

    1. Clone the git repository

    -
      -
    • From your command line, navigate to the parent folder where you want the cloned repository code to live

    • -
    • Clone the knowledge-commons-works repository with git clone git@github.com:MESH-Research/knowledge-commons-works.git && git submodule update --init

    • -
    -
    -

    Note: Do not use the --recurse-submodules option when cloning the repository or the --recursive option when initializing the submodules. This will clone redundant copies of the inter-dependent submodules.

    -
    -
    -
    -

    2. Create your configuration files

    -
      -
    • cd knowledge-commons-works

    • -
    • Create and configure the .env file in this folder as described here

    • -
    • Create the .invenio.private file with the following contents:

    • -
    -
    [cli]
    -services_setup = True
    -instance_path = /opt/invenio/var/instance
    -
    -
    -
    -
    -

    3. Start the docker-compose project

    -
      -
    • docker-compose --file docker-compose.yml up -d

    • -
    -
    -
    -

    4. Initialize the database and other services, and build asset files

    -
      -
    • enter the web-ui container by running docker exec -it kcworks-ui bash

    • -
    -
    -

    Note: The container name may be different depending on your local docker setup. You can find the correct name by running docker ps

    -
    -
      -
    • run the script to set up the instance services and build static assets bash ./scripts/setup-services.sh

    • -
    -
    -

    Note: Some of the commands in this script may take a while to run. Patience is required! The invenio rdm-records fixtures command in particular may take up to an hour to complete during which time it provides no feedback. Don’t despair! It is working.

    -
    -
    -
    -

    5. Create your own admin user

    -
      -
    • enter the web-ui container by running docker exec -it kcworks-ui bash

    • -
    -
    -

    Note: The container name may be different depending on your local docker setup. You can find the correct name by running docker ps

    -
    -
      -
    • run the commands:

    • -
    -
    invenio users create <email> --password <password>
    -invenio users activate <email>
    -invenio access allow administration-access user <email>
    -
    -
    -
    -
    -

    6. View the application

    -
      -
    • The Knowledge Commons Works app is now running at https://localhost

    • -
    • The REST API is running at https://localhost/api

    • -
    • pgAdmin is running at https://localhost/pgadmin

    • -
    • OpenSearch Dashboards is running at https://localhost:5601

    • -
    -

    This setup will allow you to make changes to the core Knowledge Commons Works codebase and see those changes reflected in the running application.

    -
    -
    -
    -

    Full local development setup

    -

    You will need to take some further steps if you want to -- Make and test changes to the various invenio modules that are included as git submodules. -- View and insert debugging statements into the code of the various core Invenio packages installed into the python environment. -To do this, you will need to do the following:

    -
      -
    1. Ensure the required git submodules are cloned by running the following commands in the knowledge-commons-works folder:

      -
      git submodule update --init
      -
      -
      -

      This will clone the following repositories:

      -
      main git@github.com:MESH-Research/invenio-record-importer-kcworks.git
      -main git@github.com:MESH-Research/invenio-group-collections-kcworks.git
      -main git@github.com:MESH-Research/invenio-modular-deposit-form.git
      -main git@github.com:MESH-Research/invenio-modular-detail-page.git
      -main git@github.com:MESH-Research/invenio-remote-api-provisioner.git
      -main git@github.com:MESH-Research/invenio-remote-user-data-kcworks.git
      -local-working git@github.com:MESH-Research/invenio-communities.git
      -local-working git@github.com:MESH-Research/invenio-rdm-records.git
      -local-working git@github.com:MESH-Research/invenio-records-resources.git
      -local-working git@github.com:MESH-Research/invenio-vocabularies.git
      -
      -
      -

      These cloned repositories should then appear under the knowledge-commons-works/site/kcworks/dependencies folder.

      -
    2. -
    3. Install the python packages required by Knowldge Commons Works locally by running pipenv install in the knowledge-commons-works folder.

    4. -
    5. When you start up the docker compose project, add an additional project file to the command:

      -
        -
      • docker-compose --file docker-compose.yml --file docker-compose.dev.yml up -d -This will mount a variety of local package folders as bind mounts in your running containers. This will allow you to make changes to the python code in the cloned repositories and see those changes reflected in the running Knowledge Commons Works instance.

      • -
      -
    6. -
    -
    -
    -

    Controlling the KCWorks (Flask) application

    -

    The application instance and its services can be started and stopped by starting and stopping the docker-compose project:

    -
    docker-compose --file docker-compose.yml up -d
    -
    -
    -
    docker-compose --file docker-compose.yml stop
    -
    -
    -
    -

    [!Caution] -Do not use the docker-compose down command unless you want the containers to be destroyed. This will destroy all data in your database and all OpenSearch indices. YOU DO NOT WANT TO DO THIS!

    -
    -

    If you need to restart the main Flask application (e.g., after making configuration changes) you can do so either by stopping and restarting the docker-compose project or by running the following command inside the kcworks-ui container:

    -
    uwsgi --reload /tmp/uwsgi_ui.pid
    -
    -
    -

    Similarly, the REST API can be restarted by running the following command inside the web-ui container:

    -
    uwsgi --reload /tmp/uwsgi_api.pid
    -
    -
    -

    But these commands should not be necessary in normal operation.

    -
    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/known_issues.html b/docs/build/known_issues.html deleted file mode 100644 index 2e85a6908..000000000 --- a/docs/build/known_issues.html +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - - - Known Issues - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    -
    -

    Known Issues

    -
    -

    Uploading files

    -
      -
    • Parallel uploads will fail if they are started after a large file has already started uploading.

      -
        -
      • Behaviour:

        -
          -
        • Even small files begun while a large file is uploading will fail if it is more than 2 minutes before the large file finishes. The files will appear to succeed (the bar will reach 100%) but when the first file completes, the subsequent files will switch and be shown as failed.

        • -
        • This is a limitation of the InvenioRDM file uploading infrastructure and will take significant time to fix (not a current priority).

        • -
        • It should only happen if the first file takes longer than 2 minutes to upload. (Around 200mb on a fast connection.)

        • -
        -
      • -
      • Cause:

        -
          -
        • Although the PUT requests to send the file content are made in parallel, the requests are processed by InvenioRDM sequentially in a queue. This can leave some upload requests waiting a long time for a response if they are queued behind a large file upload. If this wait time exceeds 2 minutes, the load balancer will cut off the idle connection causing the upload to fail.

        • -
        -
      • -
      • Workaround:

        -
          -
        • wait for large files to finish uploading before starting other uploads.

        • -
        • if an upload does fail, click the trash icon to remove it and try that file again on its own.

        • -
        -
      • -
      -
    • -
    -
    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/metadata.html b/docs/build/metadata.html deleted file mode 100644 index 77a55af22..000000000 --- a/docs/build/metadata.html +++ /dev/null @@ -1,1436 +0,0 @@ - - - - - - - - - Metadata Schema, Vocabularies, and Identifiers - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    -
    -

    Metadata Schema, Vocabularies, and Identifiers

    -

    The default metadata schema for InvenioRDM records is defined in the invenio-rdm-records package and documented here. It also includes a number of optional metadata fields which have been enabled in KCWorks, documented here.

    -

    In this documentation we provide

    -
      -
    1. A full example of a KCWorks record metadata object

    2. -
    3. A list of the controlled vocabularies and identifier schemes supported by KCWorks

    4. -
    5. Discussion of how some of the standard InvenioRDM metadata fields are used in KCWorks

    6. -
    7. A list of the custom metadata fields KCWorks adds to the base InvenioRDM schema

    8. -
    -
    -

    Example metadata record

    -
    -

    JSON object for record creation

    -

    What follows is an example of a complete metadata record (JSON object) used to create a KCWorks record. The various fields and their possible values are described in the sections below.

    -

    Note that no single actual record would include all of these fields. The example is provided to illustrate the structure of the metadata record and the sort of values that are valid for each field.

    -
    {
    -    "custom_fields": {
    -        "code:codeRepository": "https://github.com/my-project",
    -        "code:programmingLanguage": ["Python", "JavaScript"],
    -        "code:developmentStatus": "active",
    -        "journal:journal": {
    -            "title": "My Journal Title",
    -            "issue": "2",
    -            "volume": "8",
    -            "pages": "123-456",
    -            "issn": "0378-5955"
    -        },
    -        "imprint:imprint": {
    -            "title": "My Book Title",
    -            "pages": "458",
    -            "isbn": "0-06-251587-X",
    -            "place": "Lagos"
    -        },
    -        "meeting:meeting": {
    -            "dates": "October 2022",
    -            "place": "Michigan State University",
    -            "title": "Fall 2022 Meeting of the Humanities Commons Working Group",
    -            "acronym": "MET",
    -            "url": "https://myevent.org"
    -        },
    -        "kcr:ai_usage": {
    -            "ai_used": true,
    -            "ai_description": "I used ChatGPT to generate the references."
    -        },
    -        "kcr:book_series": [
    -            {
    -                "series_title": "My series",
    -                "series_volume": "8"
    -            }
    -        ],
    -        "kcr:commons_domain": "hcommons.org",
    -        "kcr:course_title": "My course",
    -        "kcr:degree": "PhD",
    -        "kcr:discipline": "Education",
    -        "kcr:edition": "2nd",
    -        "kcr:institution_department": "Education",
    -        "kcr:media": [
    -            "printed paper"
    -        ],
    -        "kcr:meeting_organization": "Humanities Commons",
    -        "kcr:notes": "These are some notes about the deposit not intended for the public record.",
    -        "kcr:project_title": "My project",
    -        "kcr:publication_url": "https://mycourse.org",
    -        "kcr:sponsoring_institution": "MSU",
    -        "kcr:submitter_email": "jane.doe@hcommons.org",
    -        "kcr:submitter_username": "janedoe",
    -        "kcr:volumes": {
    -            "total_volumes": "8",
    -            "volume": "1"
    -        },
    -        "kcr:user_defined_tags": [
    -            "Access",
    -            "Digital humanities",
    -            "Collaboration"
    -        ]
    -    },
    -    "metadata": {
    -        "resource_type": {
    -            "id": "instructionalResource-syllabus"
    -        },
    -        "creators": [
    -            {
    -                "person_or_org": {
    -                    "name": "Doe, Jane",
    -                    "type": "personal",
    -                    "given_name": "Jane",
    -                    "family_name": "Doe",
    -                    "identifiers": [
    -                        {
    -                            "scheme": "orcid",
    -                            "identifier": "0000-0001-2345-6789"
    -                        }
    -                    ]
    -                },
    -                "role": {
    -                    "id": "author"
    -                },
    -                "affiliations": [{"name": "Michigan State University"}]
    -            }
    -        ],
    -        "title": "A Syllabus for a Digital Pedagogy Course",
    -        "additional_titles": [
    -            {
    -                "title": "Teaching in the Age of AI",
    -                "type": { "id": "subtitle" },
    -                "lang": { "id": "eng" }
    -            }
    -        ],
    -        "publisher": "KCWorks",
    -        "publication_date": "2018/2020-09",
    -        "subjects": [
    -            {
    -                "id": "http://id.worldcat.org/fast/958235",
    -                "subject": "History",
    -                "scheme": "FAST-topical"
    -            },
    -            {
    -                "id": "http://id.worldcat.org/fast/1086436",
    -                "subject": "Race",
    -                "scheme": "FAST-topical"
    -            },
    -            {
    -                "id": "http://id.worldcat.org/fast/966892",
    -                "subject": "Identity (Psychology)",
    -                "scheme": "FAST-topical"
    -            }
    -        ],
    -        "contributors": [
    -            {
    -                "person_or_org": {
    -                    "name": "John Doe",
    -                    "type": "personal",
    -                    "given_name": "John",
    -                    "family_name": "Doe",
    -                    "identifiers": [
    -                        {
    -                            "scheme": "orcid",
    -                            "identifier": "0000-0001-2345-6780"
    -                        }
    -                    ]
    -                },
    -                "role": { "id": "other" },
    -                "affiliations": [{"name": "Michigan State University"}]
    -            }
    -        ],
    -        "dates": [
    -            {
    -                "date": "2025-01-01",
    -                "type": { "id": "other" },
    -                "description": "The date when the syllabus was made available."
    -            }
    -        ],
    -        "formats": [
    -            "application/pdf"
    -        ],
    -        "languages": [
    -            { "id": "eng" }
    -        ],
    -        "identifiers": [
    -            {
    -                "identifier": "https://example.com/syllabus",
    -                "scheme": "url"
    -            }
    -        ],
    -        "related_identifiers": [
    -            {
    -                "identifier": "10.1234/foo.bar",
    -                "scheme": "doi",
    -                "relation_type": { "id": "iscitedby" },
    -                "resource_type": { "id": "dataset" }
    -            }
    -        ],
    -        "sizes": [
    -            "11 pages",
    -            "32 x 24 cm"
    -        ],
    -        "version": "v1.0",
    -        "rights": [
    -            {
    -                "id": "cc-by-nc-4.0",
    -                "description": {
    -                    "en": "Allows re-distribution and re-use of a licensed work on the condition that the creator is appropriately credited and that the re-use is not for commercial purposes."
    -                },
    -                "link": "https://creativecommons.org/licenses/by-nc/4.0/legalcode"
    -            }
    -        ],
    -        "description": "<h1>A description</h1> <p>with HTML tags</p>",
    -        "additional_descriptions": [
    -            {
    -                "description": "Some additional description about the methods involved in the syllabus.",
    -                "type": {
    -                    "id": "methods",
    -                    "title": {
    -                        "de": "Technische Informationen",
    -                        "en": "Technical info"
    -                    }
    -                },
    -                "lang": {"id": "eng", "title": {"en": "English"}}
    -            }
    -        ],
    -        "locations": {
    -            "features": [
    -                {
    -                    "geometry": {
    -                        "type": "Point",
    -                        "coordinates": [-32.94682, -60.63932]
    -                    },
    -                    "place": "test location place",
    -                    "description": "test location description",
    -                    "identifiers": [
    -                        {"identifier": "12345abcde", "scheme": "wikidata"},
    -                        {"identifier": "12345abcde", "scheme": "geonames"}
    -                    ]
    -                }
    -            ]
    -        },
    -        "funding": [
    -            {
    -                "funder": {
    -                    "id": "00k4n6c32",
    -                },
    -                "award": {
    -                    "identifiers": [
    -                        {
    -                            "identifier": "https://sandbox.zenodo.org/",
    -                            "scheme": "url"
    -                        }
    -                    ],
    -                    "number": "111023",
    -                    "title": {
    -                        "en": "Launching of the research program on meaning processing"
    -                    }
    -                }
    -            }
    -        ],
    -    },
    -    "access": {
    -        "record": "public",
    -        "files": "restricted",
    -        "embargo": {
    -            "active": true,
    -            "until": "2029-01-01",
    -            "reason": "Publisher requires embargo.",
    -        }
    -    },
    -}
    -
    -
    -
    -
    -

    JSON object retrieved from the record API

    -

    The JSON object retrieved from the record API shares the same basic structure as the JSON object used to create the record, except that it includes a number of additional fields. Some properties are also filled out with additional details (e.g., readable titles for licenses, etc.)

    -
    -
    -
    -

    Controlled Vocabularies

    -
    -

    Subject headings

    -
    -

    FAST

    -

    The FAST controlled vocabulary (https://www.oclc.org/research/areas/data-science/fast.html) is used for the subjects field. See the metadata.subjects section for more information about how to include FAST subjects in a KCWorks record.

    -
    -
    -

    Homosaurus

    -

    The FAST vocabulary is augmented in KCWorks by the Homosaurus vocabulary (https://homosaurus.org/) for subjects related to sexuality and gender identity. See the metadata.subjects section for information about how to include Homosaurus subjects in a KCWorks record.

    -
    -
    -
    -
    -

    Resource types

    -

    As an open repository that serves a multidisciplinary audience, KCWorks uses a custom vocabulary of resource types designed (a) to support the wide variety of scholarly materials we accept and (b) to facilitate ease of use for depositors. The terms in this vocabulary are mapped to DataCite’s resourceTypeGeneral vocabulary and a number of other resource type vocabularies (COAR, CSL, EUREPO, Schema.org). This allows correct export of metadata to DataCite and in other metadata formats.

    -

    InvenioRDM employs a hierarchical structure of resource types, each of which has a number of subtypes. In KCWorks the 8 top-level resource types are:

    -
      -
    • audiovisual

    • -
    • dataset

    • -
    • image

    • -
    • instructionalResource

    • -
    • presentation

    • -
    • software

    • -
    • textDocument

    • -
    • other

    • -
    -

    We selected these top-level types in part to allow division of the many subtypes into manageable groups. This allows us to provide a wide range of resource types while also allowing users to easily find the resource type that best fits their deposit.

    -

    Beneath these top-level types are a number of subtypes, which are listed below. Where the DataCite schema allows free-text, arbitrary subtypes, we have followed InvenioRDM’s approach of using a controlled vocabulary of subtypes. Where our list of top-level types is short, we have erred on the side of including more subtypes. Again, this allows us to support a wide range of materials without forcing them to choose a subtype that does not fit. It also allows us to tailor the user interface of the upload form to the specific subtype of the record being deposited, preventing the confusion and overwhelm of users being presented with many metadata fields which are not relevant to their material.

    -

    The following is the complete list of KCWorks resource types with their subtypes. This list may be expanded in the future.

    -
      -
    • audiovisual

      -
        -
      • documentary

      • -
      • interviewRecording

      • -
      • musicalRecording

      • -
      • other

      • -
      • performance

      • -
      • podcastEpisode

      • -
      • audioRecording

      • -
      • videoRecording

      • -
      -
    • -
    • dataset

    • -
    • image

      -
        -
      • chart

      • -
      • diagram

      • -
      • figure

      • -
      • map

      • -
      • visualArt

      • -
      • photograph

      • -
      • other

      • -
      -
    • -
    • instructionalResource

      -
        -
      • curriculum

      • -
      • lessonPlan

      • -
      • syllabus

      • -
      • other

      • -
      -
    • -
    • presentation

      -
        -
      • conferencePaper

      • -
      • conferencePoster

      • -
      • presentationText

      • -
      • slides

      • -
      • other

      • -
      -
    • -
    • software

      -
        -
      • 3DModel

      • -
      • application

      • -
      • computationalModel

      • -
      • computationalNotebook

      • -
      • service

      • -
      • other

      • -
      -
    • -
    • textDocument

      -
        -
      • abstract

      • -
      • bibliography

      • -
      • blogPost

      • -
      • book

      • -
      • bookSection

      • -
      • conferenceProceeding

      • -
      • dataManagementPlan

      • -
      • documentation

      • -
      • editorial

      • -
      • essay

      • -
      • interviewTranscript

      • -
      • journalArticle

      • -
      • legalComment

      • -
      • legalResponse

      • -
      • magazineArticle

      • -
      • monograph

      • -
      • newspaperArticle

      • -
      • onlinePublication

      • -
      • poeticWork

      • -
      • preprint

      • -
      • report

      • -
      • workingPaper

      • -
      • review

      • -
      • technicalStandard

      • -
      • thesis

      • -
      • whitePaper

      • -
      • other

      • -
      -
    • -
    • other

      -
        -
      • catalog

      • -
      • collection

      • -
      • event

      • -
      • interactiveResource

      • -
      • notes

      • -
      • patent

      • -
      • peerReview

      • -
      • physicalObject

      • -
      • workflow

      • -
      -
    • -
    -

    Note that (like with the base InvenioRDM resource types), neither the list of top-level resource types nor the list of subtypes exactly matches the vocabulary provided by DataCite under resourceTypeGeneral. Those types are all included in the KCWorks vocabulary–some as top-level types, some as subtypes. But because we do not follow DataCite in allowing arbitrary free-text subtypes, we have needed to greatly expand the list of subtypes to support the wide variety of materials we accept. As mentioned above, however, each subtype is mapped to a DataCite resourceTypeGeneral value for correct export to DataCite and other metadata formats.

    -

    You can compare the KCWorks resource types with the list from the original Humanities Commons CORE repository here. The KCWorks resource type vocabulary is not structured in the same way as the CORE vocabulary (which was a flat list), but the KCWorks subtypes encompass all of the original CORE types.

    -
    -
    -

    Creator/contributor roles

    -

    Keeping with our support for a wide variety of objects and disciplines, our creator roles are more diverse than just “author,” “editor,” or “translator.” For contribuors we were influenced by the CRediT Taxonomy, finding ways of recognizing labor even when the contribution is not immediately visible. Included in both creator and contributor roles a selection of types taken from the Variations Metadata taxonomy, providing the ability to credit those who engage in creative and musical works.

    -

    The complete list of creator/contributor roles is:

    -
      -
    • actor

    • -
    • adaptor

    • -
    • annotator

    • -
    • analyst

    • -
    • arranger

    • -
    • artisan

    • -
    • artist

    • -
    • attributedName

    • -
    • author

    • -
    • authorOfIntroduction

    • -
    • authorOfForeword

    • -
    • authorOfAfterword

    • -
    • committeeChair

    • -
    • choreographer

    • -
    • cinematographer

    • -
    • collaborator

    • -
    • collector

    • -
    • committeeMember

    • -
    • composer

    • -
    • conductor

    • -
    • consultant

    • -
    • contactperson

    • -
    • correspondent

    • -
    • datacollector

    • -
    • datacurator

    • -
    • datamanager

    • -
    • dedicatee

    • -
    • designer

    • -
    • director

    • -
    • distributor

    • -
    • donor

    • -
    • drafter

    • -
    • editor

    • -
    • examiner

    • -
    • formerOwner

    • -
    • hostinginstitution

    • -
    • illustrator

    • -
    • interviewee

    • -
    • interviewer

    • -
    • inventor

    • -
    • juror

    • -
    • licensee

    • -
    • lyricist

    • -
    • manufacturer

    • -
    • organizer

    • -
    • owner

    • -
    • performer

    • -
    • photographer

    • -
    • printer

    • -
    • producer

    • -
    • projectOrTeamLeader

    • -
    • projectOrTeamManager

    • -
    • projectOrTeamMember

    • -
    • recording engineer

    • -
    • referee

    • -
    • registrationagency

    • -
    • registrationauthority

    • -
    • relatedperson

    • -
    • reporter

    • -
    • researcher

    • -
    • researchgroup

    • -
    • researchParticipant

    • -
    • rightsholder

    • -
    • screenplayAuthor

    • -
    • speaker

    • -
    • supervisor

    • -
    • transcriber

    • -
    • translator

    • -
    • witness

    • -
    • workpackageleader

    • -
    • writerOfAccompanying

    • -
    -

    Note that where InvenioRDM provides distinct custom vocabularies for creators and contributors, KCWorks employs a single creator/contributor vocabulary. This is in keeping with our handling of the creators and contributors fields, discussed below.

    -
    -
    -

    Identifier Schemes

    -
    -

    Works

    -
    -

    DOI (primary identifier)

    -

    KCWorks (and InvenioRDM) supports the DOI identifier scheme to identify works in the repository. Note that two DOIs are minted for each KCWorks record: one for the current version of the record, and one for the work as a whole (including all versions). The version-specific DOI is stored in the pids property of the metadata record (pids.identifiers.doi). The work DOI is stored in the parent.pids.doi property of the parent object.

    -

    These DOIs are minted by DataCite (https://datacite.org/) and the attached metadata is maintained automatically by KCWorks.

    -

    Additional DOIs minted elsewhere can be attached to a KCWorks record. If provided at record creation such external DOIs can be used as the record’s primary identifier (in pids.doi). Otherwise, they can be added using the identifiers property of the metadata record using the scheme alternate-doi. In both cases, these externally minted DOIs are not maintained automatically by KCWorks.

    -
    -
    -

    OAI (secondary identifier)

    -

    KCWorks also supports the OAI identifier scheme. The OAI identifier for a KCWorks record is stored in the pids property of the metadata record (pids.identifiers.oai).

    -
    -
    -

    Handle (secondary identifier)

    -

    KCWorks also supports the Handle identifier scheme (https://handle.net/). The Handle identifier for a KCWorks record is stored in the identifiers property of the metadata record (identifiers[0].identifier) using the scheme handle.

    -
    -
    -

    ISSN (secondary identifier)

    -

    An ISSN is an eight digit code that identifies a print or electronic newspaper, journal, magazine, or other periodical. More information on the ISSN can be found on ISSN.org.

    -
    -
    -

    ISBN (secondary identifier)

    -

    An ISBN (International Standard Book Number) is a ten (pre-2007) or 13 digit (2007 to present) identifier used to identify both print and electronic published books. More information on the ISBN can be found on ISBN-international.org.

    -
    -
    -
    -

    People

    - - -
    -

    GND

    -

    KCWorks also supports the Integrated Authority File (GND) identifier scheme (https://www.dnb.de/EN/Professionell/Standardisierung/GND/gnd_node.html). The GND identifier of the submitter of the KCWorks record is stored in the person_or_org.identifiers property of the creators array (creators[0].person_or_org.identifiers.identifier) using the scheme gnd.

    -
    -
    -

    ISNI

    -

    KCWorks also supports the ISNI identifier scheme (https://isni.org/). The ISNI of the submitter of the KCWorks record is stored in the person_or_org.identifiers property of the creators array (creators[0].person_or_org.identifiers.identifier) using the scheme isni.

    -
    -
    -
    -

    Organizations

    - -
    -

    Grid (deprecated)

    -

    KCWorks also supports the Grid identifier scheme (https://www.grid.ac/) for organizations using the scheme grid. This scheme is deprecated in favour of ROR, however, and should not be used for new identifiers.

    -
    -
    -

    GND

    -

    KCWorks also supports the Integrated Authority File (GND) identifier scheme (https://www.dnb.de/EN/Professionell/Standardisierung/GND/gnd_node.html) for organizations using the scheme gnd.

    -
    -
    -
    -

    Funders

    -
    -

    DOI

    -

    Funders in the metadata.funding array can be identified using DOIs formed with a FundRef id and the scheme doi.

    -
    -
    -

    OFR

    -

    Funders in the metadata.funding array can also be identified using the Open Funder Registry (https://openfunder.org/) identifiers and the scheme ofr.

    -
    -
    -
    -
    -

    KCWorks Implementation of Core InvenioRDM Fields

    -
    -

    metadata.subjects

    -

    Note that KCWorks employs the FAST controlled vocabulary (https://www.oclc.org/research/areas/data-science/fast.html) for the subjects field, complemented by the Homosaurus vocabulary (https://homosaurus.org/).

    -

    The FAST vocabulary is divided into a number of sub-vocabularies called “facets”, allowing more efficient searching and less ambiguity in the subject headings. FAST subjects in the metadata.subjects array must include the complete WorldCat url for the subject heading, the standard human-readable label, and a scheme including “FAST” followed by a hyphen and the FAST facet name in lowercase: i.e., one of

    -
      -
    • “FAST-topical”

    • -
    • “FAST-geographic”

    • -
    • “FAST-corporate”

    • -
    • “FAST-formgenre”

    • -
    • “FAST-event”

    • -
    • “FAST-meeting”

    • -
    • “FAST-personal”

    • -
    • “FAST-title”

    • -
    • “FAST-chronological”

    • -
    -

    You can search the FAST subject headings and their corresponding WorldCat urls here. The OCLC also provides helpful tools such as assignFAST, which suggests FAST subject headings based on a string (https://fast.oclc.org/assignfast/) and a converter from LCSH subject headings to FAST subject (http://fast.oclc.org/lcsh2fast).

    -

    Subject from the Homosaurus vocabulary must similarly include the complete homosaurus.org url as the id, the standard human-readable label as the subject, and a scheme with the value “Homosaurus”. The Homosaurus subject headings can be searched here.

    -

    Example:

    -
    {
    -    "subjects": [
    -        {
    -            "id": "http://id.worldcat.org/fast/123456",
    -            "subject": "Art History",
    -            "scheme": "FAST-topical"
    -        },
    -        {
    -            "id": "https://homosaurus.org/v3/homoit0000669",
    -            "subject": "Intersex variations",
    -            "scheme": "Homosaurus"
    -        }
    -    ]
    -}
    -
    -
    -
    -
    -

    metadata.creators/metadata.contributors

    -

    Note that the KC username of a creator or contributor may be stored in the person_or_org.identifiers array of the creator or contributor object with the scheme kc_username.

    -

    Users are also strongly encouraged to include an ORCID identifier in the person_or_org.identifiers array with the scheme orcid.

    -
    -

    [!Note] -The KC username is the primary link between a KCWorks record and a KC user. If you want a work to be associated with a KC user, you must include the KC username in creator or contributor object.

    -
    -

    Example:

    -
    {
    -    "person_or_org": {
    -        "identifiers": [
    -            {
    -                "scheme": "kc_username",
    -                "identifier": "jdoe"
    -            },
    -            {
    -                "scheme": "orcid",
    -                "identifier": "0000-0000-0000-0000"
    -            }
    -        ]
    -    }
    -}
    -
    -
    -
    -
    -
    -

    KCWorks Custom Fields (kcworks/site/metadata_fields)

    -

    Beyond the standard InvenioRDM metadata fields, KCWorks adds a number of custom metadata fields to the schema using InvenioRDM’s custom field mechanism. These are all located in the top-level custom_fields field of the record metadata. They are prefixed with two different namespaces:

    -
      -
    • kcr: custom fields that are used to store data from the KC system. These fields may be used for new data, but are not required.

    • -
    • hclegacy: custom fields that are used to store data from the legacy CORE repository. These fields must not be used for new data.

    • -
    -
    -

    kcr:ai_usage

    -

    Type: Object[boolean, string]

    -

    This field stores data about any use of generative AI in the production of the record.

    -

    Example:

    -
    {
    -    "kcr:ai_usage": {
    -        "ai_used": true,
    -        "ai_description": "This paper was edited using generative AI editing software."
    -    }
    -}
    -
    -
    -
    -
    -

    kcr:media

    -

    Type: Array[string]

    -

    This field stores a list of media or materials involved in the creation of the record. This field is used to store free-form user-defined descriptors of the media or materials and does not impose any controlled vocabulary.

    -

    Example:

    -
    {
    -    "kcr:media": ["watercolor", "found objects", "audio recordings"]
    -}
    -
    -
    -
    -
    -

    kcr:commons_domain

    -

    Type: string

    -

    This field stores the KC organizational (Commons) domain associated with the KCWorks record, if any. The record should also be placed in the KCWorks collection associated with this organization.

    -

    Example:

    -
    {
    -    "kcr:commons_domain": "arlisna.hcommons.org"
    -}
    -
    -
    -
    -
    -

    kcr:chapter_label

    -

    Type: string

    -

    This field stores the label of the chapter associated with the KCWorks record, if any. This allows us to differentiate between a simple chapter label (e.g. “Chapter 1”) and a more substantive title for the same chapter (e.g., “The Role of AI in Modern Art”).

    -

    Example:

    -
    {
    -    "kcr:chapter_label": "Chapter 1"
    -}
    -
    -
    -
    -
    -

    kcr:content_warning

    -

    Type: string

    -

    This field stores an optional content warning for the KCWorks record. This is used to flag the record for KCWorks users so that they can be aware of potentially problematic content in the record. This field is not to be used for content moderation by KCWorks moderators or admins. It is only to be used voluntarily and as desired by the record submitter.

    -

    Example:

    -
    {
    -    "kcr:content_warning": "This work contains detailed accounts of abuse that may be distressing to some readers."
    -}
    -
    -
    -
    -
    -

    kcr:course_title

    -

    Type: string

    -

    This field stores the title of the course associated with the KCWorks record. It is intended primarily for use with syllabi and instructional materials.

    -

    Example:

    -
    {
    -    "kcr:course_title": "Introduction to Modern Art"
    -}
    -
    -
    -
    -
    -

    kcr:degree

    -

    Type: string

    -

    This field stores the educational degree (e.g., PhD, DPhil, MA, etc.) associated with the KCWorks record. It is intended primarily for use with theses and dissertations.

    -

    Example:

    -
    {
    -    "kcr:degree": "PhD"
    -}
    -
    -
    -
    -
    -

    kcr:discipline

    -

    Type: string

    -

    This field stores the academic discipline associated with the KCWorks record. It is intended primarily for use with theses, dissertations, and other educational artifacts. It is not intended as a general-purpose field for describing the subject matter of the KCWorks record. For that, you should use the metadata.subjects and kcr:user_defined_tags fields.

    -

    This field is intended to complement the thesis:university and kcr:institution_department fields.

    -

    This field is not constrained by any controlled vocabulary.

    -

    Example:

    -
    {
    -    "kcr:discipline": "Latin American Literature"
    -}
    -
    -
    -
    -
    -

    kcr:edition

    -

    Type: string

    -

    This field stores a descriptor for the edition of the KCWorks record, if any.

    -

    Example:

    -
    {
    -    "kcr:edition": "Second Edition"
    -}
    -
    -
    -
    -
    -

    kcr:meeting_organization

    -

    Type: string

    -

    This field stores the name of the organization associated with the meeting or conference associated with the KCWorks record. It is intended primarily for use with conference papers, presentations, proceedings, etc.

    -

    Example:

    -
    {
    -    "kcr:meeting_organization": "American Association of Art Historians"
    -}
    -
    -
    -
    -
    -

    kcr:project_title

    -

    Type: string

    -

    This field stores the title of a project for which the KCWorks record was created. It can be used flexibly for, e.g., grant-funded projects, research projects, artistic projects, etc.

    -

    Example:

    -
    {
    -    "kcr:project_title": "Kingston Poetry Residency, 2024"
    -}
    -
    -
    -
    -
    -

    kcr:publication_url

    -

    Type: string (URL)

    -

    This field stores the URL of the publication associated with the KCWorks record. It is not the URL of the KCWorks record itself or of the work it contains. For example, if the KCWorks record contains a journal article, it would not hold the URL for the published journal article. It is intended to hold the URL of the publication as a whole that the KCWorks record is based on or is a part of. So it might hold the main URL for the journal in which the article was published, or the main URL for the book in which the chapter was published, etc.

    -

    This string must be a valid URL.

    -

    Example:

    -
    {
    -    "kcr:publication_url": "https://www.example.com/publication/123456"
    -}
    -
    -
    -
    -
    -

    kcr:sponsoring_institution

    -

    Type: string

    -

    This field stores the name of the institution that sponsored the KCWorks record. One intended use is for unpublished materials such white papers that were sponsored or commissioned by an institution. The field may also be used for the institution hosting a conference or workshop associated with the KCWorks record (as distinct from the organization that sponsored the event).

    -

    Note that this field is not intended for the degree-granting institution associated with a thesis or dissertation. That institution’s title should be stored in the thesis:university field.

    -

    Example:

    -
    {
    -    "kcr:sponsoring_institution": "University of Toronto"
    -}
    -
    -
    -
    -
    -

    kcr:submitter_email

    -

    Type: string (email address)

    -

    This field stores the email address of the submitter of the KCWorks record. It must be a valid email address.

    -

    Example:

    -
    {
    -    "kcr:submitter_email": "john.doe@example.com"
    -}
    -
    -
    -
    -
    -

    kcr:submitter_username

    -

    Type: string

    -

    This field stores the KC username of the submitter of the KCWorks record. This should be used even if the submitter is also a contributor to the KCWorks record and has included the same username in the metadata.creators.person_or_org.identifiers array.

    -

    Example:

    -
    {
    -    "kcr:submitter_username": "jdoe"
    -}
    -
    -
    -
    -
    -

    kcr:institution_department

    -

    Type: string

    -

    This field stores the institutional department in which a thesis, dissertation, or other educational artifact was produced. It is intended to complement the thesis:university field, which stores the degree-granting institution.

    -

    Example:

    -
    {
    -    "kcr:institution_department": "Art History"
    -}
    -
    -
    -
    -
    -

    kcr:book_series

    -

    Type: Object[string, string]

    -

    This field stores the title of a series that contains the KCWorks record, along with the optional volume number of the work within the series.

    -

    Example:

    -
    {
    -    "kcr:book_series": {
    -        "series_title": "The Complete Works of Jane Austen",
    -        "series_volume": "Volume 1"
    -    }
    -}
    -
    -
    -
    -
    -

    kcr:user_defined_tags

    -

    Type: Array[string]

    -

    This field stores a list of user-defined tags for the KCWorks record. Unlike the metadata.subjects field, these tags are not constrained by any controlled vocabulary. Items should be free-form strings that describe the KCWorks record in a way that is not covered by the metadata.subjects field.

    -
    -

    [!Note] -The kcr:user_defined_tags field is intended to supplement the metadata.subjects field, not as the primary means of describing the KCWorks record’s subject matter. Assigning proper metadata.subjects entries allows for much more effective search and discovery of the KCWorks record.

    -
    -

    Example:

    -
    {
    -    "kcr:user_defined_tags": ["Ukranian refugees", "Migrants in Europe"]
    -}
    -
    -
    -
    -
    -

    kcr:commons_search_recid (system field)

    -

    This field is used to store the persistent identifier for the KCWorks record in the KC central search index.

    -
    -

    [!Warning] -This field is automatically generated by the invenio-remote-api-provisioner service when a KCWorks record is published. It must not be set by the user.

    -
    -
    -
    -

    kcr:commons_search_updated (system field)

    -

    Type: string (ISO 8601 datetime string)

    -

    This field stores the date and time when the KCWorks record was last updated in the KC central search index.

    -
    -

    [!Warning] -This field is automatically generated by the invenio-remote-api-provisioner service when a KCWorks record is published. It must not be set by the user.

    -
    -
    -
    -
    -

    HC Legacy Custom Fields

    -

    The hclegacy namespace is used for custom fields that are used to store data from the legacy CORE database. These fields should not be used for new data.

    -
    -

    custom_fields.hclegacy:groups_for_deposit

    -

    Type: Array[Object[string, string]]

    -

    This field is used to store the groups to which a legacy CORE record belonged before import into KCWorks. It was used to create corresponding KCWorks collections during migration.

    -

    Example:

    -
    {
    -    "hclegacy:groups_for_deposit": [
    -        {
    -            "group_name": "Group Name",
    -            "group_identifier": "Group Identifier"
    -        }
    -    ]
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:collection

    -

    Type: string

    -

    This field is used to store the org collection to which a legacy CORE record belonged before import into KCWorks. It was used to create corresponding KCWorks org collections during migration.

    -

    Example:

    -
    {
    -    "hclegacy:collection": "Collection Name"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:committee_deposit

    -

    Type: integer

    -

    This field is used to store the committee deposit number for a legacy CORE record. It was not used during migration and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:committee_deposit": 123456
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:file_location

    -

    Type: string

    -

    This field is used to store the relative path the the file for a legacy CORE record. It was not used during migration and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:file_location": "/path/to/file.pdf"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:file_pid

    -

    Type: string

    -

    This field is used to store the persistent identifier for the file for a legacy CORE record. It was not used during migration and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:file_pid": "hc:123456"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:previously_published

    -

    Type: string

    -

    This field is used to store the previously published status for a legacy CORE record. It was not used during migration and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:previously_published": "true"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:publication_type

    -

    Type: string

    -

    This field is used to store the publication type for a legacy CORE record. It was used during migration to help determine the KCWorks resource type of the record. It is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:publication_type": "Journal Article"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:record_change_date

    -

    Type: string (ISO 8601 datetime string)

    -

    This field is used to store the date of the last change to a legacy CORE record. It was not used during migration to KCWorks and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:record_change_date": "2024-01-01T00:00:00Z"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:record_creation_date

    -

    Type: string (ISO 8601 datetime string)

    -

    This field is used to store the date of the creation of a legacy CORE record. It was not used during migration because InvenioRDM does not allow overriding of the record creation date. It is only preserved for historical purposes and should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:record_creation_date": "2024-01-01T00:00:00Z"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:record_identifier

    -

    Type: string

    -

    This field is used to store the internal system identifier for a legacy CORE record. It was not used during migration and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:record_identifier": "1001634-1263"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:submitter_org_memberships

    -

    Type: array[string]

    -

    This field is used to store the organizations to which a legacy CORE record’s submitter belonged before import into KCWorks. It was used to create corresponding KCWorks org collections during migration and assign the work to those org collections.

    -

    Example:

    -
    {
    -    "hclegacy:submitter_org_memberships": ["arlisna", "mla"]
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:submitter_affiliation

    -

    Type: string

    -

    This field is used to store the organizational affiliation of a legacy CORE record’s submitter at the time of import into KCWorks. It was not used during migration and is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:submitter_affiliation": "University of Toronto"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:submitter_id

    -

    Type: string

    -

    This field is used to store the internal KC system user id of a legacy CORE record’s submitter. It was used during migration to assign ownership of the newly created record, and is preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:submitter_id": "123456"
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:total_views

    -

    Type: integer

    -

    This field is used to store the total number of views for a legacy CORE record prior to import into KCWorks. It was used during migration to create KCWorks usage stats aggregations for the record. It is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:total_views": 123456
    -}
    -
    -
    -
    -
    -

    custom_fields.hclegacy:total_downloads

    -

    Type: integer

    -

    This field is used to store the total number of downloads for a legacy CORE record prior to import into KCWorks. It was used during migration to create KCWorks usage stats aggregations for the record. It is only preserved for historical purposes. It should not be used for new data.

    -

    Example:

    -
    {
    -    "hclegacy:total_downloads": 123456
    -}
    -
    -
    -
    -
    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/objects.inv b/docs/build/objects.inv deleted file mode 100644 index 56009553a6237335fc42116156e18411c44ad3f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7983 zcmV+~AJE_NERX>N99Zgg*Qc_4OWa&u{KZXhxWBOp+6Z)#;@bUGkQZf|#N zWn^b%AVY6$ZEtRKAXjg4YjX-CAXa5^b7^mGIv@%oAXI2&AaZ4GVQFq;WpW^IW*~HE zX>%ZEX>4U6X>%ZBZ*6dLWpi_7WFU2OX>MmAdTeQ8E(&*ofVq>n~Yk;tm2JSaNJcM_a|p zJm(MqfdmL-U7j2re>_RLK0nNxEFlNUC0^NI_3J7*x@orkvoz01TIVEd>ScMmZ43H| z6!m@CHubuwd$KI60wJpOrlM`lISypu2a$6&vE2_BLsstzLLw1r(uB1fht8BF&PdL_rZmN@hCyJ7hmM*=HL2 z#nIL5{R<|$Ez%ww4Sma|r5D&;>}{H^_e$mNrY7o6FEHicoy-)=%w}O~_b$#CR|83P z@sK<;?Ok$Trg&>*eP7gN)8=caqdxK1ji!vE5I`Xm1SKuhQepv+9x-*whGv%ft4 zNPCFIm8|o;s0!|bH~U>@R5E^D_=-+A%aZE!B4obFv0}h-`tv{k-5FJReDdMs>Vy?s zu};e>shhrBmRSnlcUZ<)f~*C3w4f(3Jh2k7)VSx#I66~N=bNUa-J0k!(bh-IjfrV| z;>2L^ZA(eT1M0mYup-Lp#PniF_t5$FP@0|O?6o1AF&4B%_J-q7A(b{hZMLYwqJ zF=N#OG2;^_2EyMK^0V(YsR@xL?@q3yJp;feOKXu>OFk%UgIWt@#_yaMPWUeHG}`DL zK64CwrXh$Yi*{#u1%<9L*Xg>z&t-?UZYJTW-wJpV&GY>@x~YOajd?P>26ZZ5qntX2!j=T zLdW?iwo?N7LO;WwkT`zqxS$8)Uh^<2GT&uMnq|$l?qj>nyNn2rL3jDv%!`I>>+}w5 zf4ixmJGFZNA0=}m(#`5my5!>sE+a4cG*A09`O?87ee;DjIUgZ6C16Up=||!JkHz^J z_ebDON~4fahp!o2$UnL3W7VWNN9(-)Xhnq8h3UnRigsOg>`{lnJH_yh#ttyD)6f<} z1Ny{`KgSvp&H@+`jUNai5sqX$*ca2;nQ91>Mrt2yR8>RBWY#PFvwegho<7*Uzulr4 z(aip7`5{<%JS+28KPQ*ka3#!dn*7o4^G5ifo#D7`D=ML1jqB$ggnB^yyV7sv(vPOI zv6!mc6d8mw`alq*WbvAC)9PLDdT|HjRTa?yb=s;j+S#QS%cj!3Sj?R@>ot5T>#k4h ztQcq4hi(?$a||LeE<=nni*a0|EJHR{?VwOr6GOO+XOrs6mOiPgBF)2%5zL4%yR`f` zSl^b#y&8M9rXzdfJsQuw@X`o?K`=pN9}OYnrDC$^WJb_XWnFbpdT5g@IQK8T={{hX4-D)Cu5VtSfPdj&n7Y z8TA^AVX}!r+w8pU`t{4?li!WOc62HU!4T{Fu-LX6`VWQOqx1Zttgv(g{Q&}o zV65}QTH**q01yC3J_#IWTD^| zMKUPWmV`2$zbKSV+~IY7k)tv$zavCV~txIGk$l2(JqLR zwb`od=_m)w>-sXfcAc%K|2BiAy)HS@zA@Yn|De5I-log`k7Vx;-Vt8YYu9a&(H^ne z7yp82X=^uJoA|k~6n!gUohw4ge<>sph6(LukMWPaF%`n{g?T4{Ru%UJJdb%NIPGv@aWWoQ`DhF? zanYnwwzN}QHTh`!kq$&SNMz{Z;EKh7b7C5Xvxbi^EMOI$H`_5f^ritnd%o}u39R{Z z?^zJsBLocYY4DCqp5U?B-c)6`l5Hkh6e!_HOqxU*2plDKiQRh?wfd=eR|i6M*5#Rk@1#ZXBfHA%-@67PKWXt!rP zadEfC$zVn1wy2AiMgzOuiRiS;ng}3|^h-tgj#-*Y`P-f}vTZSQT9VxS*mO6s*$Zl3 zw4rx00~(CUxu^Al=F|&nlHWFcwo1F?q3l=K9}g;fL<0vP0D%4e0N|ZXVYdoX(JG|{ zCd-?32_qW7g~&2zF7Jmh7Ekj)$Dr;o8EJ)M+|2_W@j4Q2g2{Wzb_HzV2I!Nx?fPad z8=tIJ-e<>)L>%#4tCk~iluX9RALNC2@TH|G)R?xUuS zvZYOgPB-}F3fSlvfOD8346to zuAxD#cuO1?AaG|`1J|5IxNsSQHdS;5e4G|GFdr*mSU7-eDqg}>+I8d4xGY$1F3XdB z_FzZXo}=EzYHX(%%N<@Rs#2?u`Kh_!H)DFMuS7lNUH~(b1yRl)PrBXHNzF`Zex^?qT9k9>XhL)xKMRb5BZ-mJ! zau7lEhA8XAhhh=ELX)?e$-y|$TSat`_)sjO*J$#iX7ckm(T|Gg=fsC%5xqf^pU~tj zd3iuy{xVMV6H(TQ55*#SizYuSlbAaCnJDYThhh=^h$g=XlUL-`+i{{_h_X(6C>GIA zXhMZ?o7Ys&IMcyPqRbO7j>YvevpG;U2X7*{4u~>Oyf_+{b1$5QENq4kJ-iir#BG*U zk#_crN(%;Fx;^5COKyB-c|Xgl@*1{9(7AVKbUxa3-v4}<BMD?i#1YPQ}<~(*q%C6#K8^E;+R>PEbqz!rHBxhXj*~O^6h)dW>=tns_K-72F_r6m3ZVf;S?=wpnVy ziHUQV*_QgchH)zcmgnXqx>;&5Qdj{ti}K&8+TSE@#rTHbi)r0AeyGEnZFMJN75)-% zPrg)RkrBIGw4zDaUC&U#b3irS$p~ojD+u9X;5<@@eKX!YU@nciv9@hGgbCZ5?)bK* zPRSc?$c`^5d#BZ1CSH1vq8ppNLE3M#S530HGRUKT($hsh6jD5 zZil3iYBz0hUpCvWdc0PXxn1=tFg0OLCJ@JJ27A^tcPwPTh9jKqy5dI^t9bk+;w{ zeOg`T%|i_@&UP1$I7H#Z(M=M0UltEf7058gY23o}DT;R%<&`9^!7es^9yMY1BL-pE zaGW?MSwR)z-5WR)%UQf`I|X1{$N5(o5h1$%OeF7T$p;3=mv2t-y3JeG@Wy=VtcrPAGpV@)YDm`? zw=H+T4Lx+~8bPPL*hV4hH6K9zHXG9M%b(83kw?jUH8QlIm5eZ57Y8`+oiWfj8qzfm4sRAt}fV{rn$TB zinwY4WN;wd!2)pM)2M#~!3e{RV&E=>84f_4EbKrbjU(t#Qb*G8Ba7T;2ooY=Z2`95 z)A(_(d+g}w#k%1a)7W{VLLkC$_#hNX7on29JN+g)In=09H>F!EuBlx=q-{Modgxch zR_cV41IW#_ZM)*SFZ-&9B?1q^JZuOTMNY?=A`+b2DmN!!*=6Mh4o60UDtpu21zzN3 z+@ueXg|X)7!h}P;Wxr(;=K^v_tp}$Od=#25(R}@|E&*#QE{)@3rqaochBsBz{<@069Bmvz9n!IR|G>4xlg>90kPmDii6XpBv6a3g6M^V+n_;ulw{ia#Y8| zirkH$n-grvXuM43(}_KP`3E|IEPfDYANlM$YTPm2GxLeNxC)@^KqaTNUO%742(fQQ zp7-ps6|L0C(`l)R`P(yUd7N{>;KP$@0k)5ekWJhDpsvt?t}So2aCL$z0i?>#0E#5^ z>ZHxnvDq+OPQqmXGGKv;aM~tI$lig;bM}n+b1Gj);9^EZ8xw94k%R!*Oq>chjTErc z4fL=qvY~YLr$>U&W3E^8+jl z>&!=cbTKz+ZNbfb(Y9q?47T8G((Ddej?sliw97I-NX~6g(K}x_L2XUgVkayog1xqy zcwx8?z~v$zhOlheFMcgiEg^DuV=3_>1nyU&Lj?AVhxO>$sZ5ZIaUxqAZ!@eYt%Eo|NQ@w?7wtLbJ_J^p=M6r#x0<44jN&o-hYzne^Wh;PXC zEQcc-%|@)N@GW=hD%);%tgLuXtvMd1IiA0Q;{vo5Lz);!#%dL=1^Jvg;b{bPBHZc7 z4d&sio4nZnA_pUU7j^@&MpkWedsj$60^pD@v>Z7Oyl}gL=z`-MMN{fR#ZF>sQGDf@ zWHyie3X*v7mpXgQPv1Gpzj_fC&#^(Mz$Oe^yf7jXdhjY~Hc8mr66U!@Y$>v{f*nX* z^ew<=IYJZWI}1X4MDRP^&z85*AcFpU=vWd4AFfSaL#-PRJQnW)rJ~ISuPV2lMbzRcjiWL!09EaYPLo6KOm%ops!tMk$X10GB0UP+C^a zLzn{nh~`J6-!VcSYmmS5uMA?_$RL3sSlAps`}qis9z=2 z!qEzV3|8V?ul!vknk|4YMrdE}@u!hF6>DCr#ygUq4Me=BD9IMXXz!ccYI7 zgB#MNiM5kaY5GlyyivGv+f-rIA|I77{>+_c?6V8E-om!R!RuNdvN9LgXX47UTN;Jc zdGXam5?9#-We$Hn6F;S+Pi2gs*MVI{%mSN3Rk2Apd}z1)n91JR$;t5|`E+r7bTvPF z_d=q=yaQv4O#fvb?ZA#bw<@zU2kse} zVCVrRJRVZ9^BA1z=$i^x1;RR5vjIXsAdfGW|1NS*-XZgbSwC*JMCgzVB$bZnS4liG zh-U_|%v9tMOrN#3H^oK@L{C$kF31I}1Y}iHGpToV^H3G}Z6UX-h;yWQ@QFnPc39Mn zfOEEFHcB*ue9cN2>p1z3is+>XKg;wLE76X#Eny15sy0L*9AOqk|r%auES0g2--A%w=y6((nyA_UF3qSlQdtKn0Gc@gFNG7P0$_}Gi7c^ z9mGMAQ>+qxd5sniN`pmENZ0wj*xX3RMv(VC8uw{;m;7s6Y>OyCIZ^0XIs#qn@#5fU z3fP2U&z>w#-6|cu?+WM+X*k^UqoWlwr=2m4hlTm^5JKV8u?O>$HS0ppp~)vhC6A`6 zK{j%emZ1gE0c z{P$nzYSqWV{=rZC^s5ME-1F5-a)AGVQmYLdkb|GdODXl(CE(a8V5nZKiGxplzm8ET zR@^}uxCk9*8r0e6k3+7_BMqkT>rJ_VKO@M{2dTKv+ymyK!+HY~8O@0$lcuSuU&!RP@a~>%3i^b5T@m@vR)oYN!kw@3Mt~yNk|OQ@?Rvl z*A(t_swOQF1_2N(E<;+7PAR09wqHZ+%-{q3UwN(5tO=GQGx(Th=L_WpyH@!A6aG}= z#^bMj5UR#){ktMQp08yM7Ks zYZ}VpK}*_0V=`Q-q)mFW?Sl%aqnbGo?nt=f=Mb#LZgGNO)=2o0W%vm}9VR=L32T-L z;&U9;Gqs{6*Qw-U*6&4?L72#Yli)WorIf#l#n$`!B3soZ6gh?1%3W@MVc3TcCW@Sx z%3t$(2%^}9A=EwRxZ;NueDh+7OAOp^aC6HxWf7kB;~nNV=FfM`jqfawL$$a&z}8A& zfc{)9+!}sfQY}g~bgS!Pl~P?X+zt=+6Sb&ui}`hNPifOW+Hx&WZ7Jgxv*}7diaGOO zn&hwc`Hupyr7A1^ap@Ri1{&BD6Bo{`Y|H3Q8D?PyQ_<^vZ3W1Rmie)UF-dBKvEpOl zPdOGN9Hyu@`@ZQf4h0Rp(#k~&HUs7>WwdAL;|kI@L5G0|3FImUUgGO%fX_>sikv@H zqh0j$0*yKY+;Y3KCod@zA4$sDg3 zZio0G(J-Wn0m^f{Lb$CTlKpxe)Ul&O7@|sZ{(OHj-JhwWE9wsAp$fb^>-5R@$!F~p zHR}Q9GJ%W&6lYoVGuLblQ5l=!4cg~_+m%>8d~`nIKRa%cDHrqL_)J0RF7TyA69#e(lC#S`-*U{pD_Y={T${dOG(`)v9 z2vp;a$+Bj#PRy^SxSDm-rQ3EJhF4ba<(~>fAH`s<6`sB*Ya*=GJd91&^a)GZ-PAkO z1Gu?sVZQkFY_tx_t}esy^!xeZY_7X>y9w>QLKovgzjUzS1Ctlv3jzLIi)bXo46gjQ zmN4eFf}Z3bi}SMpv|B@4(3xj(54+;whwE@dG4q3y=#gq92>Z1>+|}?=`OaKQ#xtE+_`V!x zF7QxxGXvI@*K7zl%xGqUcygIJfV^4E3_xf8vLTu)bD4n?le26HJ3U*OLF&j;Hsr7~ zlvxO4xyf9BQ?im7bb)+iL!PlrWF~Sb2blvqBKw$uACq@%NHaa-m`NJSHRfQ8$TH@^ zcjp%iQH*64Gl)iViVb;Uvx#XePt7A{i}?S^AU3#x-LfOO#Yg8vk~myPZ#?=ka^-l_IQ#70K@Wm}I@E_$U za$F~{NFUT8ED5u`G#oWRI-83wvzAW{MTuRWU;4_6H=$(3emXlSmD>_&yRe)UtRwY+ ziNy?9dVzJ5JC1d39*OvZzm~?$#{7V%_U(w9u~nIS!!L@ji$k`P)^NW(IXeD$!cPO@ z*GKSw;US;rK{&2E8dfvygM!&Sw&m@rPuMQytbkuh4&ZTf!nQv%^O*tifn600=2kl| zvT1g#e-cQ%Jr2*u={UR%qtSvn;5oOpSQc$jXU6tCd68AnrTD0<54Axsa3?0vb8WOU lowQNSzC}T33iUB4DHFkR - - - - - - - - Reference - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    - -
    - -
    - -
    -
    -
    -

    Reference

    -
    -

    InvenioRDM Documentation

    -

    The Knowledge Commons Works is built as an instance of InvenioRDM. The InvenioRDM Documentation, including customization and development information, can be found at https://inveniordm.docs.cern.ch/.

    -
    -
    - -
    -
    - -
    - -
    -
    - - - - - \ No newline at end of file diff --git a/docs/build/search.html b/docs/build/search.html deleted file mode 100644 index 89f3ee29f..000000000 --- a/docs/build/search.html +++ /dev/null @@ -1,302 +0,0 @@ - - - - - - - - - -Search - Knowledge Commons Works 0.3.8 documentation - - - - - - - - - - - - - - - Contents - - - - - - Menu - - - - - - - - Expand - - - - - - Light mode - - - - - - - - - - - - - - Dark mode - - - - - - - Auto light/dark, in light mode - - - - - - - - - - - - - - - Auto light/dark, in dark mode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Skip to content - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    -
    - -
    -
    -
    - - - - - Back to top - -
    -
    - -
    - -
    -
    - - - -
    - -
    -
    -
    - - -
    -
    - - Made with Sphinx and @pradyunsg's - - Furo - -
    -
    - -
    -
    - -
    -
    - -
    -
    - - - - - - - - \ No newline at end of file diff --git a/docs/build/searchindex.js b/docs/build/searchindex.js deleted file mode 100644 index f3e26ca47..000000000 --- a/docs/build/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({"alltitles": {"0.3.0-beta3 (2024-11-30)": [[3, "beta3-2024-11-30"]], "0.3.1-beta4 (2024-12-10)": [[3, "beta4-2024-12-10"]], "0.3.2-beta5 (2024-12-11)": [[3, "beta5-2024-12-11"]], "0.3.3-beta6 (2024-12-18)": [[3, "beta6-2024-12-18"]], "0.3.4-beta7 (2025-01-09)": [[3, "beta7-2025-01-09"]], "0.3.5-beta8 (2025-01-10)": [[3, "beta8-2025-01-10"]], "0.3.6-beta9 (2025-02-25)": [[3, "beta9-2025-02-25"]], "0.3.7-beta10 (2025-03-01)": [[3, "beta10-2025-03-01"]], "0.3.8-beta11 (2025-03-14)": [[3, "beta11-2025-03-14"]], "1. Clone the git repository": [[11, "clone-the-git-repository"]], "2. Create your configuration files": [[11, "create-your-configuration-files"]], "3. Start the docker-compose project": [[11, "start-the-docker-compose-project"]], "4. Initialize the database and other services, and build asset files": [[11, "initialize-the-database-and-other-services-and-build-asset-files"]], "5. Create your own admin user": [[11, "create-your-own-admin-user"]], "6. View the application": [[11, "view-the-application"]], "A partially successful import response": [[1, "a-partially-successful-import-response"]], "A successful import response": [[1, "a-successful-import-response"]], "API": [[1, "api"]], "API-level Record Objects": [[2, "api-level-record-objects"]], "About": [[0, "about"]], "Add and Configure an Environment File": [[8, "add-and-configure-an-environment-file"]], "Adding new entry points": [[7, "adding-new-entry-points"]], "Adding new node.js packages to be included": [[7, "adding-new-node-js-packages-to-be-included"]], "Additional environment variables with sensitive information": [[8, "additional-environment-variables-with-sensitive-information"]], "Additional required environment variables with paths on your local file system": [[8, "additional-required-environment-variables-with-paths-on-your-local-file-system"]], "An unsuccessful import response": [[1, "an-unsuccessful-import-response"]], "Attaching configuration to the service": [[2, "attaching-configuration-to-the-service"]], "Augmented RecordService": [[2, "augmented-recordservice"]], "BaseService": [[2, "baseservice"]], "BaseServiceComponent": [[2, "baseservicecomponent"]], "Build and Configure the Containerized Services": [[8, "build-and-configure-the-containerized-services"]], "Build and start the containers": [[8, "build-and-start-the-containers"]], "Bulk Record Import (invenio-record-importer-kcworks)": [[6, "bulk-record-import-invenio-record-importer-kcworks"]], "CLI Commands": [[4, "cli-commands"]], "Changes": [[3, "changes"]], "Changes to external python modules (including Invenio modules)": [[7, "changes-to-external-python-modules-including-invenio-modules"]], "Changes to html template files": [[7, "changes-to-html-template-files"]], "Changes to invenio.cfg": [[7, "changes-to-invenio-cfg"]], "Changes to python code in the site folder": [[7, "changes-to-python-code-in-the-site-folder"]], "Changes to static files": [[7, "changes-to-static-files"]], "Changes to theme (CSS) and javascript files": [[7, "changes-to-theme-css-and-javascript-files"]], "Changing the Group Ownership of a Collection (PATCH)": [[1, "changing-the-group-ownership-of-a-collection-patch"]], "Clone the knowledge-commons-works Code": [[8, "clone-the-knowledge-commons-works-code"]], "Collections": [[6, "collections"]], "Collections for KC Groups (invenio-group-collections-kcworks)": [[6, "collections-for-kc-groups-invenio-group-collections-kcworks"]], "Commit strategy": [[7, "commit-strategy"]], "Component Methods": [[2, "component-methods"]], "Configuration of InvenioRDM": [[5, "configuration-of-inveniordm"]], "Content moderation notifications": [[6, "content-moderation-notifications"]], "Contents:": [[9, null]], "Contributing": [[0, "contributing"]], "Controlled Vocabularies": [[13, "controlled-vocabularies"]], "Controlling containerized nginx server": [[8, "controlling-containerized-nginx-server"]], "Controlling just the containerized services": [[8, "controlling-just-the-containerized-services"]], "Controlling the Application Services": [[8, "controlling-the-application-services"]], "Controlling the KCWorks (Flask) application": [[11, "controlling-the-kcworks-flask-application"]], "Copyright and License": [[0, "copyright-and-license"]], "Create a draft of a new record": [[2, "create-a-draft-of-a-new-record"]], "Create a new version of a published record": [[2, "create-a-new-version-of-a-published-record"]], "Create an admin user": [[8, "create-an-admin-user"]], "Create and initialize the database, search indices, and task queue": [[8, "create-and-initialize-the-database-search-indices-and-task-queue"]], "Creating a Collection for a Group (POST)": [[1, "creating-a-collection-for-a-group-post"]], "Creating a new Work via the InvenioRDM REST API": [[1, "creating-a-new-work-via-the-inveniordm-rest-api"]], "Creating and Modifying Records in General": [[2, "creating-and-modifying-records-in-general"]], "Creating and Modifying a Deposit Record (RDMRecordService)": [[2, "creating-and-modifying-a-deposit-record-rdmrecordservice"]], "Creator/contributor roles": [[13, "creator-contributor-roles"]], "Customizations to InvenioRDM": [[6, "customizations-to-inveniordm"]], "DOI": [[13, "doi"]], "DOI (primary identifier)": [[13, "doi-primary-identifier"]], "Daily Development Workflow": [[7, "daily-development-workflow"]], "Delete a record": [[2, "delete-a-record"]], "Deleting a Group\u2019s Collection (DELETE)": [[1, "deleting-a-group-s-collection-delete"]], "Deposit Form Customizations": [[6, "deposit-form-customizations"]], "Developing KCWorks": [[7, "developing-kcworks"]], "Digging deeper": [[7, "digging-deeper"]], "Docker log rotation": [[8, "docker-log-rotation"]], "Documentation": [[0, "documentation"]], "Email notifications for work owners": [[1, "email-notifications-for-work-owners"]], "Email templates": [[6, "email-templates"]], "Enabling per-field permissions": [[6, "enabling-per-field-permissions"]], "Endpoint configuration": [[1, "endpoint-configuration"]], "Ensure some version of python is installed": [[8, "ensure-some-version-of-python-is-installed"]], "Error responses": [[1, "error-responses"]], "Event timing": [[1, "event-timing"]], "Example import request": [[1, "example-import-request"]], "Example metadata record": [[13, "example-metadata-record"]], "FAST": [[13, "fast"]], "File service configuration": [[2, "file-service-configuration"]], "Fixing docker-compose \u201cnot found\u201d error": [[8, "fixing-docker-compose-not-found-error"]], "Forked Core Invenio Modules": [[6, "forked-core-invenio-modules"]], "FromConfigSearchOptions": [[2, "fromconfigsearchoptions"]], "Full local development setup": [[11, "full-local-development-setup"]], "Funders": [[13, "funders"]], "GET requests": [[1, "get-requests"]], "GND": [[13, "gnd"], [13, "id2"]], "Ghost Inspector tests": [[7, "ghost-inspector-tests"]], "Git Branching Strategy": [[7, "git-branching-strategy"]], "Git Submodules": [[7, "git-submodules"]], "Gotchas with the RDMRecordService": [[2, "gotchas-with-the-rdmrecordservice"]], "Grid (deprecated)": [[13, "grid-deprecated"]], "Group Collections API": [[1, "group-collections-api"]], "Group collection owner": [[1, "group-collection-owner"]], "HC Legacy Custom Fields": [[6, "hc-legacy-custom-fields"], [13, "hc-legacy-custom-fields"]], "Handle (secondary identifier)": [[13, "handle-secondary-identifier"]], "Handling collection name collisions": [[1, "handling-collection-name-collisions"]], "Handling deleted group collections": [[1, "handling-deleted-group-collections"]], "Handling group name changes": [[1, "handling-group-name-changes"]], "Hard delete a draft": [[2, "hard-delete-a-draft"]], "Homosaurus": [[13, "homosaurus"]], "How Tos: Creating and Modifying Records": [[2, "how-tos-creating-and-modifying-records"]], "How Tos: Custom Record Service Components": [[2, "how-tos-custom-record-service-components"]], "ISBN (secondary identifier)": [[13, "isbn-secondary-identifier"]], "ISNI": [[13, "isni"]], "ISSN (secondary identifier)": [[13, "issn-secondary-identifier"]], "Identifier Schemes": [[13, "identifier-schemes"]], "Identifying the owners of the work": [[1, "identifying-the-owners-of-the-work"]], "Identifying the work for import": [[1, "identifying-the-work-for-import"]], "In-app notifications": [[6, "in-app-notifications"]], "In-depth Installation Instructions (NEEDS UPDATING)": [[8, "in-depth-installation-instructions-needs-updating"]], "Install Docker 20.10.10+ and Docker-compose 1.17.0+": [[8, "install-docker-20-10-10-and-docker-compose-1-17-0"]], "Install Node.js and NVM": [[8, "install-node-js-and-nvm"]], "Install Python and Required Python Tools": [[8, "install-python-and-required-python-tools"]], "Install and enable Python 3.9.16": [[8, "install-and-enable-python-3-9-16"]], "Install pyenv and pipenv": [[8, "install-pyenv-and-pipenv"]], "Install the Invenio Python Modules": [[8, "install-the-invenio-python-modules"]], "Install the invenio-cli command line tool": [[8, "install-the-invenio-cli-command-line-tool"]], "Installation": [[11, "installation"]], "Integrations with KC": [[6, "integrations-with-kc"]], "InvenioRDM Documentation": [[14, "inveniordm-documentation"]], "InvenioRDM Record Objects": [[2, "inveniordm-record-objects"]], "InvenioRDM Services": [[2, "inveniordm-services"]], "InvenioRDM\u2019s Layered Architecture": [[2, "inveniordm-s-layered-architecture"]], "JSON object for record creation": [[13, "json-object-for-record-creation"]], "JSON object retrieved from the record API": [[13, "json-object-retrieved-from-the-record-api"]], "Javascript tests": [[7, "javascript-tests"]], "KC Search Provisioning (invenio-remote-api-provisioner)": [[6, "kc-search-provisioning-invenio-remote-api-provisioner"]], "KC Username (recommended)": [[13, "kc-username-recommended"]], "KC accounts for work owners": [[1, "kc-accounts-for-work-owners"]], "KCWorks Architecture": [[2, "kcworks-architecture"]], "KCWorks Custom CLI Commands": [[4, "kcworks-custom-cli-commands"]], "KCWorks Custom Fields (kcworks/site/metadata_fields)": [[6, "kcworks-custom-fields-kcworks-site-metadata-fields"], [13, "kcworks-custom-fields-kcworks-site-metadata-fields"]], "KCWorks Implementation of Core InvenioRDM Fields": [[13, "kcworks-implementation-of-core-inveniordm-fields"]], "KCWorks Infrastructure": [[10, "kcworks-infrastructure"]], "Known Issues": [[12, "known-issues"]], "Linux": [[8, "linux"]], "Loading configuration from app config variables": [[2, "loading-configuration-from-app-config-variables"]], "MacOS": [[8, "macos"]], "Making duplicate import requests": [[1, "making-duplicate-import-requests"]], "Metadata JSON object": [[1, "metadata-json-object"]], "Metadata Schema Customizations": [[6, "metadata-schema-customizations"]], "Metadata Schema, Vocabularies, and Identifiers": [[13, "metadata-schema-vocabularies-and-identifiers"]], "Modular Framework (invenio-modular-deposit-form)": [[6, "modular-framework-invenio-modular-deposit-form"]], "Modular Framework (invenio-modular-detail-page)": [[6, "modular-framework-invenio-modular-detail-page"]], "Not yet released": [[3, "not-yet-released"]], "Note about docker contexts": [[8, "note-about-docker-contexts"]], "Notes about Implementation of Core InvenioRDM Fields": [[6, "notes-about-implementation-of-core-inveniordm-fields"]], "Notifications": [[6, "notifications"]], "Notifications for import API record owners": [[6, "notifications-for-import-api-record-owners"]], "OAI (secondary identifier)": [[13, "oai-secondary-identifier"]], "OFR": [[13, "ofr"]], "ORCID (recommended)": [[13, "orcid-recommended"]], "Organizations": [[13, "organizations"]], "Overrides in the KCWorks Package (kcworks/site)": [[6, "overrides-in-the-kcworks-package-kcworks-site"], [6, "id1"]], "POST requests": [[1, "post-requests"]], "Page templates": [[6, "page-templates"]], "Pagination": [[1, "pagination"]], "Payload objects": [[1, "payload-objects"]], "People": [[13, "people"]], "Per-field editing permissions": [[6, "per-field-editing-permissions"]], "Per-field permissions configuration": [[6, "per-field-permissions-configuration"]], "Permissions and access in newly created collections": [[1, "permissions-and-access-in-newly-created-collections"]], "Python tests": [[7, "python-tests"]], "Query parameters": [[1, "query-parameters"]], "Quickstart": [[11, "quickstart"]], "RDMDraft (invenio_rdm_records.records.api.RDMDraft)": [[2, "rdmdraft-invenio-rdm-records-records-api-rdmdraft"]], "RDMRecordService": [[2, "rdmrecordservice"]], "RDMRecordService Components": [[2, "rdmrecordservice-components"]], "ROR (recommended)": [[13, "ror-recommended"]], "Reading Deposit Records (RDMRecordService)": [[2, "reading-deposit-records-rdmrecordservice"]], "Rebuilding changed files on the fly (fast but limited)": [[7, "rebuilding-changed-files-on-the-fly-fast-but-limited"]], "Record Detail Page Customizations": [[6, "record-detail-page-customizations"]], "Record Permissions": [[6, "record-permissions"]], "RecordService": [[2, "recordservice"]], "RecordService Components": [[2, "recordservice-components"]], "Reference": [[14, "reference"]], "Request": [[1, "request"], [1, "id6"], [1, "id7"], [1, "id8"], [1, "id12"], [1, "id16"], [1, "id19"], [1, "id23"], [1, "id28"]], "Request body": [[1, "request-body"], [1, "id20"], [1, "id24"]], "Request url path parameters": [[1, "request-url-path-parameters"]], "Requesting a specific collection": [[1, "requesting-a-specific-collection"]], "Requesting all collections": [[1, "requesting-all-collections"]], "Requesting collections for a Commons instance": [[1, "requesting-collections-for-a-commons-instance"]], "Requesting collections for a specific group": [[1, "requesting-collections-for-a-specific-group"]], "Required headers": [[1, "required-headers"]], "Resource types": [[13, "resource-types"]], "Restore a soft-deleted record": [[2, "restore-a-soft-deleted-record"]], "Retrieving Group Collection Metadata (GET)": [[1, "retrieving-group-collection-metadata-get"]], "Running CLI Commands in the KCWorks Container": [[4, "running-cli-commands-in-the-kcworks-container"]], "Running Invenio CLI Commands": [[4, "running-invenio-cli-commands"]], "Running automated tests": [[7, "running-automated-tests"]], "SAML Authentication": [[6, "saml-authentication"]], "Search configuration": [[2, "search-configuration"]], "SearchConfig": [[2, "searchconfig"]], "SearchOptionsMixin": [[2, "searchoptionsmixin"]], "Service Classes": [[2, "service-classes"]], "Service Components": [[2, "service-components"]], "Service Configuration": [[2, "service-configuration"]], "Service-level Response Objects": [[2, "service-level-response-objects"]], "Soft-delete a published record": [[2, "soft-delete-a-published-record"]], "Sorting": [[1, "sorting"]], "Source Code": [[0, "source-code"]], "Standardized environment variables": [[8, "standardized-environment-variables"]], "Start the uwsgi applications and celery worker": [[8, "start-the-uwsgi-applications-and-celery-worker"]], "Startup and shutdown scripts": [[8, "startup-and-shutdown-scripts"]], "Streamlined Import API": [[1, "streamlined-import-api"]], "Subject headings": [[13, "subject-headings"]], "Success responses": [[1, "success-responses"]], "Successful Response Body:": [[1, "id10"], [1, "id14"], [1, "id18"]], "Successful Response Headers": [[1, "successful-response-headers"]], "Successful Response Status Code": [[1, "successful-response-status-code"], [1, "id17"]], "Successful response body": [[1, "successful-response-body"], [1, "id22"], [1, "id26"]], "Successful response headers": [[1, "id11"], [1, "id15"]], "Successful response status code": [[1, "id9"], [1, "id13"], [1, "id21"], [1, "id25"], [1, "id29"]], "Tagging Releases": [[7, "tagging-releases"]], "Template Customizations": [[6, "template-customizations"]], "The InvenioRDM REST API": [[1, "the-inveniordm-rest-api"]], "The InvenioRDM Record Life Cycle": [[2, "the-inveniordm-record-life-cycle"]], "The basic build process (slow)": [[7, "the-basic-build-process-slow"]], "The import request": [[1, "the-import-request"]], "The request file upload failed": [[1, "the-request-file-upload-failed"]], "The request metadata is malformed or invalid": [[1, "the-request-metadata-is-malformed-or-invalid"]], "The token does not have the necessary permissions": [[1, "the-token-does-not-have-the-necessary-permissions"]], "Unsuccessful response codes": [[1, "unsuccessful-response-codes"], [1, "id27"], [1, "id30"]], "Update a published record via a new draft": [[2, "update-a-published-record-via-a-new-draft"]], "Update a record": [[2, "update-a-record"]], "Update an unpublished draft": [[2, "update-an-unpublished-draft"]], "Updating an Instance with Upstream Changes": [[7, "updating-an-instance-with-upstream-changes"]], "Updating the running KCWorks instance with development changes": [[7, "updating-the-running-kcworks-instance-with-development-changes"]], "Uploading files": [[12, "uploading-files"]], "Use the application!": [[8, "use-the-application"]], "User Data Sync (invenio-remote-user-data-kcworks)": [[6, "user-data-sync-invenio-remote-user-data-kcworks"]], "User and Group Data Updates (Internal Only)": [[1, "user-and-group-data-updates-internal-only"]], "User-first-record notifications": [[6, "user-first-record-notifications"]], "User/Groups Metadata updates and SAML authentication": [[1, "user-groups-metadata-updates-and-saml-authentication"]], "Variables for local credentials": [[8, "variables-for-local-credentials"]], "Version Control": [[7, "version-control"]], "Version Numbering": [[7, "version-numbering"]], "View container logging output": [[8, "view-container-logging-output"]], "View logging output for uwsgi processes": [[8, "view-logging-output-for-uwsgi-processes"]], "Welcome to the Knowledge Commons Works technical documentation!": [[9, "welcome-to-the-knowledge-commons-works-technical-documentation"]], "What happens to an import request that fails?": [[1, "what-happens-to-an-import-request-that-fails"]], "Which community\u2019s permissions apply?": [[6, "which-community-s-permissions-apply"]], "Who can use the import API?": [[1, "who-can-use-the-import-api"]], "Works": [[13, "works"]], "create()": [[2, "create"]], "custom_fields.hclegacy:collection": [[6, "custom-fields-hclegacy-collection"], [13, "custom-fields-hclegacy-collection"]], "custom_fields.hclegacy:committee_deposit": [[6, "custom-fields-hclegacy-committee-deposit"], [13, "custom-fields-hclegacy-committee-deposit"]], "custom_fields.hclegacy:file_location": [[6, "custom-fields-hclegacy-file-location"], [13, "custom-fields-hclegacy-file-location"]], "custom_fields.hclegacy:file_pid": [[6, "custom-fields-hclegacy-file-pid"], [13, "custom-fields-hclegacy-file-pid"]], "custom_fields.hclegacy:groups_for_deposit": [[6, "custom-fields-hclegacy-groups-for-deposit"], [13, "custom-fields-hclegacy-groups-for-deposit"]], "custom_fields.hclegacy:previously_published": [[6, "custom-fields-hclegacy-previously-published"], [13, "custom-fields-hclegacy-previously-published"]], "custom_fields.hclegacy:publication_type": [[6, "custom-fields-hclegacy-publication-type"], [13, "custom-fields-hclegacy-publication-type"]], "custom_fields.hclegacy:record_change_date": [[6, "custom-fields-hclegacy-record-change-date"], [13, "custom-fields-hclegacy-record-change-date"]], "custom_fields.hclegacy:record_creation_date": [[6, "custom-fields-hclegacy-record-creation-date"], [13, "custom-fields-hclegacy-record-creation-date"]], "custom_fields.hclegacy:record_identifier": [[6, "custom-fields-hclegacy-record-identifier"], [13, "custom-fields-hclegacy-record-identifier"]], "custom_fields.hclegacy:submitter_affiliation": [[6, "custom-fields-hclegacy-submitter-affiliation"], [13, "custom-fields-hclegacy-submitter-affiliation"]], "custom_fields.hclegacy:submitter_id": [[6, "custom-fields-hclegacy-submitter-id"], [13, "custom-fields-hclegacy-submitter-id"]], "custom_fields.hclegacy:submitter_org_memberships": [[6, "custom-fields-hclegacy-submitter-org-memberships"], [13, "custom-fields-hclegacy-submitter-org-memberships"]], "custom_fields.hclegacy:total_downloads": [[6, "custom-fields-hclegacy-total-downloads"], [13, "custom-fields-hclegacy-total-downloads"]], "custom_fields.hclegacy:total_views": [[6, "custom-fields-hclegacy-total-views"], [13, "custom-fields-hclegacy-total-views"]], "data": [[2, "data"]], "invenio-communities": [[6, "invenio-communities"]], "invenio-rdm-records": [[6, "invenio-rdm-records"]], "invenio-records-resources": [[6, "invenio-records-resources"]], "invenio-vocabularies": [[6, "invenio-vocabularies"]], "kcr:ai_usage": [[6, "kcr-ai-usage"], [13, "kcr-ai-usage"]], "kcr:book_series": [[6, "kcr-book-series"], [13, "kcr-book-series"]], "kcr:chapter_label": [[6, "kcr-chapter-label"], [13, "kcr-chapter-label"]], "kcr:commons_domain": [[6, "kcr-commons-domain"], [13, "kcr-commons-domain"]], "kcr:commons_search_recid (system field)": [[6, "kcr-commons-search-recid-system-field"], [13, "kcr-commons-search-recid-system-field"]], "kcr:commons_search_updated (system field)": [[6, "kcr-commons-search-updated-system-field"], [13, "kcr-commons-search-updated-system-field"]], "kcr:content_warning": [[6, "kcr-content-warning"], [13, "kcr-content-warning"]], "kcr:course_title": [[6, "kcr-course-title"], [13, "kcr-course-title"]], "kcr:degree": [[6, "kcr-degree"], [13, "kcr-degree"]], "kcr:discipline": [[6, "kcr-discipline"], [13, "kcr-discipline"]], "kcr:edition": [[6, "kcr-edition"], [13, "kcr-edition"]], "kcr:institution_department": [[6, "kcr-institution-department"], [13, "kcr-institution-department"]], "kcr:media": [[6, "kcr-media"], [13, "kcr-media"]], "kcr:meeting_organization": [[6, "kcr-meeting-organization"], [13, "kcr-meeting-organization"]], "kcr:project_title": [[6, "kcr-project-title"], [13, "kcr-project-title"]], "kcr:publication_url": [[6, "kcr-publication-url"], [13, "kcr-publication-url"]], "kcr:sponsoring_institution": [[6, "kcr-sponsoring-institution"], [13, "kcr-sponsoring-institution"]], "kcr:submitter_email": [[6, "kcr-submitter-email"], [13, "kcr-submitter-email"]], "kcr:submitter_username": [[6, "kcr-submitter-username"], [13, "kcr-submitter-username"]], "kcr:user_defined_tags": [[6, "kcr-user-defined-tags"], [13, "kcr-user-defined-tags"]], "metadata.creators/metadata.contributors": [[6, "metadata-creators-metadata-contributors"], [13, "metadata-creators-metadata-contributors"]], "metadata.subjects": [[6, "metadata-subjects"], [13, "metadata-subjects"]], "record": [[2, "record"]]}, "docnames": ["README", "api", "architecture", "changelog", "cli_commands", "configuration", "customizations", "developing", "in_depth", "index", "infrastructure", "installation", "known_issues", "metadata", "reference"], "envversion": {"sphinx": 61, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["README.md", "api.md", "architecture.md", "changelog.md", "cli_commands.md", "configuration.md", "customizations.md", "developing.md", "in_depth.md", "index.rst", "infrastructure.md", "installation.md", "known_issues.md", "metadata.md", "reference.md"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [3, 4, 7, 8, 9, 13], "0": [0, 1, 2, 7, 9, 11, 13], "00": [1, 6, 13], "000": 2, "0000": [1, 6, 13], "0001": 13, "00k4n6c32": 13, "00z": [1, 6, 13], "01": [1, 2, 6, 9, 13], "01t00": [1, 6, 13], "02": 9, "03": 9, "0378": 13, "04": 8, "06": [2, 13], "09": [9, 13], "1": [1, 2, 6, 7, 9, 13], "10": [1, 2, 9, 11, 13], "100": [1, 2, 12], "1001634": [6, 13], "1038515d68f7": 1, "1086436": 13, "11": [8, 9, 13], "111023": 13, "1166": 1, "1198": 1, "12": [8, 9, 11], "123": 13, "1234": [1, 13], "12345": 1, "123456": [6, 13], "1234567890": 1, "1234567891": 1, "12345abcd": 13, "1263": [6, 13], "13": 13, "14": 9, "149619": 1, "17": [9, 11], "1710": 1, "18": 9, "19": 8, "2": [1, 2, 7, 8, 9, 12, 13], "20": [9, 11], "200": 1, "2007": 13, "200mb": 12, "201": 1, "2012": 1, "2018": 13, "202": 1, "2020": [2, 13], "2022": 13, "2023": 0, "2024": [1, 6, 9, 13], "2025": [9, 13], "2029": 13, "204": 1, "207": 1, "22": 8, "2345": 13, "234567": 1, "24": 13, "25": [0, 1, 9], "251587": 13, "27": 3, "2nd": 13, "3": [0, 1, 7, 9], "30": 9, "304": 1, "3138": 1, "32": 13, "347": 1, "362": 1, "3dmodel": 13, "4": [1, 9, 13], "400": 1, "403": 1, "404": 1, "409": 1, "410": 2, "422": 1, "43": 1, "45": 1, "456": 13, "458": 13, "4891": 1, "5": [1, 9], "50": 1, "504": 1, "5402d72b": 1, "5601": [8, 11], "5955": 13, "6": [1, 8, 9], "60": [2, 13], "6379": 8, "63932": 13, "6780": 13, "6789": 13, "67890": 1, "7": [1, 9], "7d583": 2, "8": [0, 9, 13], "8601": [6, 13], "88": 2, "8gb": 8, "9": 1, "90": 1, "9200": 8, "94682": 13, "958235": 13, "966892": 13, "9742": 1, "9f06": 2, "A": [2, 3, 6, 13], "And": 2, "As": 13, "At": [1, 7, 8], "But": [1, 2, 11, 13], "By": 1, "For": [1, 2, 4, 6, 7, 8, 13], "If": [1, 2, 6, 7, 8, 11, 12, 13], "In": [1, 2, 7, 9, 13], "It": [0, 1, 2, 3, 4, 6, 7, 8, 11, 12, 13], "Its": [1, 2], "NOT": [1, 11], "No": [1, 2, 7], "Not": [1, 9], "Of": 1, "On": [4, 8], "One": [1, 6, 8, 13], "Or": [7, 8], "Such": 7, "TO": 11, "That": [6, 13], "The": [0, 3, 6, 8, 9, 11, 12, 13, 14], "Then": [4, 7, 8], "There": [1, 2, 6, 7, 8], "These": [1, 2, 3, 4, 6, 7, 8, 11, 13], "To": [1, 4, 7, 8, 11], "Tos": 9, "With": [3, 8], "__init__": 7, "__name__": 7, "_files_attr_kei": 2, "_files_bucket_attr_kei": 2, "_files_bucket_id_attr_kei": 2, "_files_data_kei": 2, "_id": 2, "_record": 2, "aa8": 1, "abil": [6, 13], "abl": [1, 6, 8], "about": [1, 7, 9, 13], "abov": [1, 7, 13], "absenc": 1, "abstract": [2, 13], "abus": [6, 13], "ac": 13, "academ": [0, 6, 13], "accept": [1, 7, 13], "access": [2, 3, 8, 11, 13], "accesscompon": 2, "accident": 1, "accommod": 1, "account": [3, 6, 13], "acm": 2, "acronym": 13, "across": 1, "action": [1, 2], "action_nam": 2, "activ": [1, 7, 8, 11, 13], "actor": 13, "actual": [1, 2, 8, 13], "ad": [1, 2, 3, 6, 13], "adaptor": 13, "add": [2, 3, 6, 7, 9, 11, 13], "addit": [1, 2, 6, 7, 11, 13], "addition": 8, "additional_descript": 13, "additional_titl": 13, "address": [1, 3, 6, 7, 8, 13], "admin": [1, 6, 13], "administ": 1, "administr": [1, 8, 11], "administrativ": 1, "advis": [3, 8], "affect": [1, 2, 3], "affili": [1, 6, 13], "afford": 1, "after": [1, 2, 7, 8, 11, 12], "ag": 13, "again": [1, 2, 7, 8, 12, 13], "against": [2, 3, 8], "agent": 1, "aggreg": [1, 4, 6, 13], "ai": [6, 13], "ai_descript": [6, 13], "ai_us": [6, 13], "alia": 8, "alias": 7, "all": [2, 3, 4, 6, 7, 8, 11, 13], "all_or_non": 1, "all_record": 2, "allow": [1, 2, 3, 6, 7, 8, 11, 13], "alon": 7, "along": [2, 6, 7, 13], "alongsid": 8, "alreadi": [1, 7, 8, 12], "also": [1, 2, 3, 4, 6, 7, 8, 13], "altern": [2, 8, 13], "although": [2, 12, 13], "alwai": [1, 2, 3, 7, 8], "ambigu": [6, 13], "american": [6, 13], "among": [2, 3], "an": [0, 3, 6, 9, 11, 12, 13, 14], "anaconda": 8, "analyst": 13, "ani": [1, 2, 4, 6, 7, 8, 13], "annot": 13, "anoth": [2, 6, 8], "anotherusernam": 1, "apart": 1, "api": [3, 4, 7, 8, 9, 11], "api_token": 8, "app": [8, 11], "appear": [1, 3, 11, 12, 13], "append": [1, 8], "appli": 1, "applic": [1, 7, 9, 13], "approach": [2, 8, 13], "appropri": [1, 7, 8, 13], "ar": [1, 2, 3, 4, 6, 7, 8, 11, 12, 13], "arbitrari": 13, "architectur": [3, 9], "archiv": 1, "area": [6, 13], "aren": 8, "arg": 2, "argument": [2, 4], "aria": 3, "arli": 3, "arlisna": [6, 13], "around": [1, 12], "arrai": [1, 6, 13], "arrang": 13, "arrow": 2, "art": [6, 13], "articl": [1, 6, 13], "artifact": [6, 13], "artisan": 13, "artist": [6, 13], "asc": 1, "ascend": 1, "ask": 8, "aspect": 7, "asset": 7, "assign": [1, 2, 6, 8, 13], "assignfast": [6, 13], "associ": [1, 2, 6, 13], "assum": [1, 8], "attach": [1, 13], "attempt": [1, 6], "attribut": [1, 2], "attributednam": 13, "audienc": 13, "audio": [6, 13], "audiorecord": 13, "audiovisu": 13, "augment": 13, "austen": [6, 13], "authent": [], "author": [1, 13], "authorofafterword": 13, "authorofforeword": 13, "authorofintroduct": 13, "auto": 3, "autom": [3, 9], "automat": [1, 2, 6, 7, 8, 13], "avail": [0, 1, 2, 4, 7, 8, 13], "available_sort_opt": 2, "avatar": 1, "avoid": [1, 3, 7], "aw": 8, "awai": 1, "awar": [6, 8, 13], "award": [1, 13], "awkward": 1, "b": [1, 2, 7, 13], "b144": 1, "back": [3, 4, 7], "backend": 6, "background": [1, 8], "bad": 1, "balanc": 12, "bar": [8, 12, 13], "bare": 1, "base": [1, 2, 3, 6, 13], "baserecordfilescompon": 2, "bash": [4, 7, 8, 11], "bashrc": 8, "basi": 1, "basic": 13, "bearer": 1, "beat": 8, "becaus": [1, 2, 3, 6, 7, 8, 13], "becom": 1, "been": [1, 2, 3, 6, 7, 8, 13], "befor": [1, 2, 4, 6, 7, 8, 12, 13], "begin": [7, 8], "begun": 12, "behaviour": 12, "behind": 12, "beig": 2, "being": [1, 2, 3, 6, 8, 13], "belong": [1, 6, 13], "below": [1, 2, 8, 11, 13], "beneath": 13, "best": [3, 8, 13], "bestmatch": 3, "beta": 7, "beta10": 9, "beta11": [0, 9], "beta3": 9, "beta4": 9, "beta5": 9, "beta6": [7, 9], "beta7": 9, "beta8": 9, "beta9": 9, "between": [1, 2, 6, 7, 13], "beyond": [6, 13], "bibliographi": 13, "big": 8, "bin": 8, "binari": 1, "bind": [8, 11], "blob": [], "block": [6, 8], "blogpost": 13, "blueprint": 2, "blueski": 3, "book": [6, 13], "booksect": 13, "boolean": [1, 6, 13], "boot": 8, "both": [1, 3, 6, 13], "branch": 3, "break": [1, 8], "broke": 3, "brown": 2, "browser": [7, 11], "bucket": [1, 2], "bucket_id": 2, "bug": [3, 7], "bugfix": [], "build": [2, 3, 6, 9], "builder": 6, "built": [0, 1, 7, 8, 14], "bulk": [4, 9], "bundl": 7, "busi": 2, "button": 3, "c": [1, 2, 7, 8], "cach": 8, "call": [1, 2, 6, 8, 13], "callback": 1, "can": [2, 3, 4, 6, 7, 8, 11, 12, 13, 14], "cannot": [1, 2, 3, 7], "carri": 1, "case": [1, 2, 6, 7, 13], "catalog": 13, "categori": 3, "caus": [3, 12], "caution": [4, 7, 11], "cc": [1, 13], "cd": [7, 8, 11], "central": [1, 6, 7, 13], "cern": [1, 14], "certain": [1, 6], "cfg": [1, 6], "ch": [1, 14], "chanc": 1, "chang": [2, 6, 8, 9, 11, 13], "change_m": 8, "changenotificationscompon": 2, "chapter": [6, 13], "chart": 13, "chatgpt": 13, "check": [1, 2, 6, 8], "check_permiss": 2, "check_revision_id": 2, "checksum": 1, "child": 2, "children": 1, "chmod": 8, "choos": [3, 13], "choreograph": 13, "chose": 8, "chrome": [], "chronolog": [6, 13], "cinematograph": 13, "class": [1, 6], "clean": [2, 7], "cleaner": 7, "cleanup": 2, "cleanup_draft": 2, "cleanup_record": 2, "clear": 2, "clear_non": 2, "clearer": 3, "cli": [1, 3, 7, 9, 11], "click": [8, 12], "client": [1, 2, 7], "clone": [7, 9], "close": 1, "cm": 13, "co": 8, "coar": 13, "code": [9, 11, 13], "codebas": [7, 11], "coderepositori": 13, "cog": 8, "collabor": [0, 13], "collect": [3, 4, 7, 9, 11], "collection_id": 1, "collection_slug": 1, "collection_vis": 1, "collector": 13, "collid": 1, "com": [0, 1, 6, 8, 11, 13], "combin": 7, "command": [1, 3, 7, 9, 11], "commerci": 13, "commiss": [6, 13], "commit": [1, 2], "committe": [6, 13], "committeechair": 13, "committeememb": 13, "common": [0, 2, 3, 6, 7, 11, 13, 14], "commons_api_token": [1, 8], "commons_group_descript": 1, "commons_group_id": 1, "commons_group_nam": 1, "commons_group_vis": 1, "commons_inst": 1, "commons_search_api_token": 8, "commun": [1, 2, 3, 11], "community_moder": 6, "community_page_url": 1, "compar": 13, "comparison": 3, "compil": 8, "complement": [6, 13], "complet": [1, 2, 3, 6, 7, 11, 12, 13], "complex": 2, "compon": [1, 3, 6, 7, 9], "compos": [7, 9, 13], "compress": 1, "comput": 8, "computationalmodel": 13, "computationalnotebook": 13, "condit": 13, "conductor": 13, "conf": 7, "confer": [6, 13], "conferencepap": 13, "conferencepost": 13, "conferenceproceed": 13, "config": [1, 6, 8], "configr": 2, "configur": [7, 9], "configuratormixin": 2, "confirm": 1, "conflict": [1, 3, 7], "conform": 1, "confus": [1, 3, 13], "connect": [1, 12], "consid": [1, 7], "consist": 2, "constrain": [6, 13], "construct": 2, "constructor": 2, "consult": 13, "contactperson": 13, "contain": [1, 3, 6, 7, 9, 11, 13], "container": 9, "content": [1, 3, 11, 12, 13], "contentmoderationcompon": 2, "continu": 7, "contribuor": 13, "contribut": [9, 13], "contributor": 9, "control": [1, 2, 3, 6, 9], "conveni": [1, 8], "convert": [6, 13], "coordin": 13, "copi": [2, 7, 8, 11], "copyright": 9, "core": [2, 4, 9, 11], "corpor": [1, 6, 13], "correct": [1, 4, 8, 11, 13], "correctli": 3, "correspond": [1, 4, 6, 13], "corrupt": 1, "cost": 1, "could": [1, 3], "count": 4, "cours": [1, 6, 8, 13], "cover": [6, 13], "cpython": 8, "creat": [3, 4, 6, 7, 9, 13], "create_search": 2, "creatibutorsfield": 3, "creation": [1, 2, 3, 6], "creativ": [1, 13], "creativecommon": 13, "creator": [1, 2, 9], "credit": 13, "crucial": 1, "crud": 2, "csl": 13, "ctrl": [7, 8], "curat": [1, 6], "curation_polici": 1, "curl": [1, 8], "current": [1, 2, 3, 6, 7, 8, 12, 13], "current_rdm_records_servic": 2, "curriculum": 13, "custom": [3, 7, 8, 9, 14], "custom_field": [1, 2], "custom_pdf_viewer_j": 7, "customfieldscompon": 2, "cut": 12, "d": [7, 8, 11], "daemon": 8, "dashboard": [3, 8, 11], "data": [3, 4, 7, 8, 9, 11, 13], "databas": [1, 2, 4, 6, 13], "datacit": 13, "datacollector": 13, "datacur": 13, "datamanag": 13, "datamanagementplan": 13, "dataservicecompon": 2, "dataset": 13, "date": [1, 3, 6, 8, 13], "datetim": [6, 13], "db": [2, 8], "de": 13, "deal": 2, "debug": [7, 11], "declar": [1, 7], "dedicate": 13, "deeper": 9, "default": [1, 2, 3, 6, 7, 8, 13], "default_files_en": 2, "default_media_files_en": 2, "defaultrecordscompon": 2, "defin": [2, 6, 7, 8, 13], "definit": [1, 2], "delai": 1, "deleg": 2, "delet": [3, 4, 7], "delete_draft": 2, "delete_record": 2, "deleted_record": 2, "deletion_statu": 1, "demo": 8, "depart": [6, 13], "depend": [1, 2, 7, 8, 11], "deploi": [4, 7], "deploy": 7, "deposit": [9, 11, 13], "depositor": 13, "depth": 9, "derefer": 2, "desc": 1, "descend": 1, "describ": [1, 6, 7, 11, 13], "descript": [1, 7, 13], "descriptor": [6, 13], "design": 13, "desir": [1, 2, 3, 6, 13], "desktop": 8, "despair": 11, "destroi": [4, 8, 11], "destruct": 2, "detail": [1, 2, 3, 9, 11, 13], "detect": 1, "determin": [6, 13], "dev": [1, 8, 11], "develop": [1, 3, 4, 8, 9, 14], "developmentstatu": 13, "diagram": [2, 13], "dict": [2, 7], "dictionari": [1, 7], "did": 1, "differ": [1, 6, 11, 13], "differenti": [6, 13], "difficult": 1, "dig": 9, "digit": 13, "direct": 2, "direction": 6, "directli": [1, 2, 7, 8], "director": 13, "directori": [1, 6, 8], "disabl": [2, 3], "disambigu": 1, "discover": [1, 2], "discoveri": [6, 13], "discuss": [1, 13], "displai": [3, 4, 6], "dissert": [6, 13], "distinct": [2, 6, 7, 13], "distress": [6, 13], "distribut": [1, 13], "distributor": 13, "divers": 13, "divid": [3, 4, 6, 13], "divis": [3, 13], "dnb": 13, "do": [1, 6, 7, 8, 11, 13], "doc": [1, 7, 8, 14], "doc_count": 1, "docker": [3, 4, 7, 9], "dockerfil": 8, "document": [1, 2, 3, 4, 6, 7, 8, 13], "documentari": 13, "docx": 1, "doe": [2, 3, 6, 7, 8, 12, 13], "doi": [1, 2, 3], "domain": [6, 13], "don": 11, "done": [7, 8], "donor": 13, "dot": 2, "down": [8, 11], "download": [1, 6, 8, 13], "dphil": [6, 13], "draft": [1, 6], "draft_cl": 2, "draft_data": 2, "draft_fil": 2, "draft_index": 2, "draft_indexer_cl": 2, "draft_indexer_queue_nam": 2, "draft_of_publish": 2, "drafter": 13, "draftfilescompon": 2, "draftmediafilescompon": 2, "draftmetadatacompon": 2, "draw": 2, "drawn": 13, "driver": 8, "dsl": 2, "dummi": 8, "dump": 2, "dumper": 2, "duplic": [], "dure": [1, 2, 3, 4, 6, 7, 8, 11, 13], "dynam": [4, 7], "e": [1, 2, 3, 4, 6, 7, 11, 13], "e2": [], "each": [1, 2, 3, 6, 7, 8, 11, 13], "earlier": [1, 2], "eas": 13, "easi": [7, 8], "easier": 7, "easili": 13, "edit": [1, 2, 3], "edited_draft": 2, "editor": 13, "editori": 13, "edtf": 1, "edu": 1, "educ": [6, 13], "effect": [6, 7, 13], "effici": [6, 13], "eight": 13, "either": [1, 2, 4, 8, 11, 13], "electron": 13, "els": 8, "elsewher": 13, "email": [3, 4, 8, 11, 13], "email_subject_import": 1, "email_subject_regist": 6, "email_template_import": 1, "email_template_regist": 6, "emailbackend": 6, "embargo": [2, 13], "embed": 2, "emit": [2, 6], "emploi": [1, 2, 6, 7, 13], "empti": [1, 2, 3], "emul": 7, "en": [1, 13], "enabl": [1, 2, 13], "encompass": 13, "encount": 1, "encourag": [6, 13], "end": [1, 3, 7], "endpoint": [2, 3], "enforc": [2, 6], "eng": [1, 13], "engag": 13, "engin": [8, 13], "english": 13, "enough": 8, "ensur": [1, 7, 11], "enter": [7, 8, 11], "entir": 1, "entiti": 1, "entri": [1, 6, 13], "env": [8, 11], "environ": [1, 7, 9, 11], "equival": 7, "er": 13, "error": [2, 3, 7], "especi": [3, 7, 8], "essai": 13, "establish": 1, "etc": [1, 2, 4, 6, 7, 11, 13], "eurepo": 13, "europ": [6, 13], "even": [1, 3, 6, 12, 13], "event": [3, 4, 6, 8, 13], "eventu": 1, "ever": 2, "everi": 7, "exact": 1, "exactli": [1, 13], "examin": 13, "exampl": [2, 4, 6, 7, 8, 9], "exce": 12, "except": [7, 13], "exclud": 2, "exec": [4, 7, 8, 11], "exist": [1, 2, 3, 4, 7, 8], "expand": [2, 13], "expandable_field": 2, "expect": 7, "expected_revision_id": 2, "expir": 2, "expires_at": 2, "explain": [8, 11], "export": [3, 4, 13], "extend": 1, "extens": [1, 2, 3, 6, 7, 8], "extern": [1, 2, 13], "extra": 8, "extra_filt": 2, "extrem": 4, "f": [1, 8], "facet": [2, 6, 13], "facilit": 13, "factori": 2, "fail": [3, 12], "failur": 1, "fall": 13, "fals": [1, 2], "famili": 3, "familiar": 1, "family_nam": [1, 2, 13], "fast": [6, 12], "favour": 13, "featur": [1, 7, 13], "feedback": 11, "fetch": 3, "field": [1, 2, 3, 9], "figur": 13, "file": [0, 3, 4, 6, 9, 13], "file1": 1, "file2": 1, "file3": [], "file_links_list": 2, "fileconfigmixin": 2, "filenam": 1, "files_attr": 2, "fill": [3, 13], "filter": [1, 2], "final": [1, 2, 8], "find": [3, 4, 7, 8, 11, 13], "finish": 12, "first": [1, 2, 3, 4, 7, 8, 11, 12], "firstrecordcreatednotificationbuild": 6, "firstrecordcreatednotificationservic": 6, "firstrecordpublishednotificationbuild": 6, "fit": 13, "fitzpatrick": 1, "fix": [3, 7, 12], "fixtur": [7, 8, 11], "flag": [3, 6, 8, 13], "flask": [2, 4, 6, 7, 9], "flat": 13, "flexibli": [6, 13], "flow": 7, "focu": 1, "folder": [1, 8, 11], "follow": [1, 2, 4, 6, 7, 8, 11, 13], "foo": [2, 13], "forbidden": 1, "forc": [2, 7, 8, 13], "fork": [8, 9], "fork_version_id": 2, "form": [1, 3, 7, 9, 11, 13], "format": [1, 3, 13], "format_check": 2, "former": 1, "formerown": 13, "formgenr": [6, 13], "forthcom": 1, "found": [1, 4, 6, 13, 14], "four": [1, 7], "fraction": 1, "fragil": 1, "free": [0, 1, 6, 8, 13], "freecodecamp": 8, "frequent": 7, "from": [1, 3, 4, 6, 7, 8, 11], "fromconfig": 2, "frontend": [3, 8], "frozen": 2, "full": [1, 3, 8, 9, 13], "full_nam": 1, "fulli": 7, "function": [2, 3, 7], "fund": [6, 13], "funder": 1, "fundref": 13, "further": [1, 2, 4, 8, 11], "futur": [1, 3, 7, 13], "g": [1, 2, 3, 4, 6, 7, 11, 13], "gatewai": 1, "gender": 13, "gener": [1, 4, 6, 7, 8, 13], "generos": 1, "geograph": [6, 13], "geometri": 13, "geonam": 13, "geopattern": 7, "get": [2, 3, 7, 8], "get_latest_by_par": 2, "get_record": 2, "get_records_by_par": 2, "gh_page": 7, "git": 8, "github": [0, 3, 7, 8, 11, 13], "gitlab": 7, "give": 1, "given": [2, 3, 7], "given_nam": [1, 2, 13], "givingitawai": 1, "gnd_node": 13, "gninx": 8, "goe": 1, "good": 8, "grace": [2, 6], "grant": [1, 2, 6, 13], "granular": 7, "great": 1, "greatli": 13, "grep": 4, "group": [3, 4, 7, 8, 9, 11, 13], "group_collect": 1, "group_collections_metadata_endpoint": 1, "group_identifi": [6, 13], "group_nam": [6, 13], "guarante": 8, "guid": 8, "h": 1, "h1": 13, "ha": [1, 2, 3, 6, 7, 8, 12, 13], "handl": [2, 3], "handler": 2, "happen": 12, "hard": [], "has_draft": 2, "have": [2, 3, 6, 7, 8, 11, 13], "hc": 9, "hcommon": [1, 6, 13], "head": 6, "header": 3, "held": 1, "help": [1, 4, 6, 7, 8, 13], "helper": 2, "here": [1, 6, 8, 11, 13], "hidden": 3, "hierarch": 13, "high": 2, "histor": [6, 13], "histori": [2, 6, 7, 13], "historian": [6, 13], "hit": 1, "hold": [1, 2, 6, 8, 13], "homoit0000669": [6, 13], "homosauru": 6, "hood": 1, "host": [6, 13], "hostinginstitut": 13, "hour": 11, "how": [4, 9, 13], "how2shout": 8, "howev": [1, 13], "html": [1, 2, 6, 8, 13], "http": [0, 1, 6, 7, 8, 11, 13, 14], "human": [1, 6, 13], "hyphen": [6, 8, 13], "i": [0, 2, 3, 4, 6, 7, 11, 12, 13, 14], "icon": [8, 12], "id": [1, 2, 3, 6, 13], "id_": 2, "idea": 8, "ident": [1, 2, 13], "identif": 7, "identifi": [3, 6, 9], "identifier_orcid": 13, "idl": 12, "idp": 1, "ignor": 1, "ignore_field_permiss": 2, "illustr": 13, "imag": [1, 2, 3, 7, 8, 13], "immedi": [1, 7, 13], "implement": [1, 3, 7, 9], "import": [2, 3, 4, 7, 8, 9, 11, 13], "import_data": 8, "import_fil": 2, "import_user_id": 1, "impos": [6, 13], "imprint": 13, "improv": 3, "inc": [1, 2], "includ": [0, 1, 2, 3, 4, 6, 8, 11, 13, 14], "include_delet": 2, "incom": 7, "incomplet": 1, "increment": 7, "independ": 1, "index": [1, 2, 4, 6, 8, 13], "index_dump": 2, "indexer_cl": 2, "indexer_queue_nam": 2, "indic": [1, 4, 6, 11], "individu": [1, 8], "influenc": 13, "info": [6, 8, 13], "inform": [1, 2, 7, 13, 14], "informationen": 13, "infrastructur": [3, 9, 12], "inherit": 2, "ini": 8, "init": [7, 11], "init_app": 2, "initi": [1, 2, 3, 7], "input": 2, "insert": [8, 11], "insid": [4, 7, 8, 11], "instal": [0, 1, 3, 7, 9], "instanc": [0, 2, 4, 6, 8, 9, 11, 14], "instance_path": [8, 11], "instanti": 2, "instead": [1, 2, 3, 7, 8], "institut": [1, 6, 13], "instruct": [0, 6, 7, 9, 11, 13], "instructionalresourc": 13, "integ": [1, 6, 13], "integr": [1, 7, 9, 13], "intend": [1, 6, 13], "intens": 1, "inter": [7, 11], "interact": 2, "interactiveresourc": 13, "interfac": [1, 2, 6, 8, 13], "intern": [2, 6, 9, 13], "interpret": 8, "interrupt": 1, "intersex": [6, 13], "interview": 13, "interviewe": 13, "interviewrecord": 13, "interviewtranscript": 13, "introduc": [1, 2, 7], "introduct": [6, 13], "invenio": [1, 3, 9, 11, 13], "invenio_": 8, "invenio_app": 8, "invenio_csrf_secret_salt": 8, "invenio_custom_pdf_view": 7, "invenio_datacite_password": 8, "invenio_drafts_resourc": 2, "invenio_group_collections_kcwork": 1, "invenio_instance_path": 8, "invenio_notif": 6, "invenio_rdm_record": [], "invenio_record": 2, "invenio_record_importer_data_dir": 8, "invenio_record_importer_local_data_dir": 8, "invenio_records_resourc": 2, "invenio_search_domain": 8, "invenio_secret_kei": 8, "invenio_security_login_salt": 8, "invenio_site_api_url": 8, "invenio_site_ui_url": 8, "invenio_sqlalchemy_database_uri": 8, "inveniordm": [0, 3, 4, 7, 8, 9, 12], "inventor": 13, "invers": 2, "invert": 3, "invit": 1, "invok": 4, "involv": [1, 2, 3, 6, 7, 11, 13], "io": 0, "irrevoc": 1, "is_delet": [1, 2], "is_draft": 2, "is_publish": 2, "is_select": 1, "isbn": [], "iscitedbi": 13, "iso": [6, 13], "issn": 1, "issu": [1, 3, 7, 9, 13], "item": [1, 2, 6, 13], "item_index": 1, "iter": 2, "its": [1, 2, 3, 6, 7, 8, 11, 12, 13], "itself": [6, 13], "j": [3, 9], "jammi": 8, "jane": [6, 13], "janedo": 13, "javascript": 13, "jdoe": [1, 6, 13], "jest": 7, "jinja": 6, "jinja2": [1, 2], "john": [1, 6, 13], "journal": [1, 6, 13], "journalarticl": [1, 13], "json": [2, 4, 7, 8], "jsp": 1, "juror": 13, "just": [3, 13], "kathleen": 1, "kc": [3, 4, 8, 9], "kc_registration_link": 1, "kc_usernam": [1, 6, 13], "kcr": [1, 8], "kcr_api": 8, "kcr_ui": 8, "kcwork": [0, 1, 3, 8, 9], "keep": [2, 7, 8, 13], "kei": [1, 2, 6], "kept": 2, "keyboard": 3, "keyword": 2, "kfitz": 1, "kind": [1, 2], "kingston": [6, 13], "know": [1, 6], "knowldg": 11, "knowledg": [0, 1, 3, 7, 11, 13, 14], "knowledgecommon": 1, "known": [3, 9], "kwarg": 2, "label": [1, 3, 6, 7, 13], "labor": 13, "lack": 2, "lago": 13, "lambda": 8, "land": 1, "lang": 13, "languag": [1, 13], "larg": [2, 3, 12], "larger": 7, "last": [1, 4, 6, 7, 13], "later": [1, 2], "latest": [1, 2, 7], "latin": [6, 13], "launch": 13, "layer": 9, "layout": 3, "lcsh": [6, 13], "lcsh2fast": [6, 13], "lead": 3, "least": [1, 2, 3, 8], "leav": [7, 12], "left": 1, "leftov": 7, "legaci": [4, 9], "legalcod": 13, "legalcom": 13, "legalrespons": 13, "length": 3, "less": [3, 6, 7, 13], "lessonplan": 13, "level": [1, 6, 13], "lib": 8, "licens": [9, 13], "license": 13, "lift": 2, "lift_embargo": 2, "like": [1, 2, 6, 7, 8, 13], "likewis": 7, "limit": [2, 12], "line": [1, 3, 4, 6, 11], "link": [1, 2, 3, 4, 6, 13], "links_item": 2, "links_item_tpl": 2, "links_search": 2, "links_search_draft": 2, "links_search_vers": 2, "linkstempl": 2, "linux": 7, "list": [1, 2, 3, 4, 6, 7, 13], "literatur": [6, 13], "live": [0, 8, 11], "load": [4, 12], "local": [1, 2, 3, 4, 7, 9], "localhost": [8, 11], "locat": [1, 6, 7, 13], "lock": [2, 8], "lock_edit_published_fil": 2, "log": [3, 6], "logic": 2, "login": 3, "loglevel": 8, "logo": [1, 3], "long": [1, 3, 7, 8, 12], "longer": [1, 2, 12], "look": [1, 6], "lost": [2, 4], "low": 2, "lowercas": [6, 13], "lt": 8, "lyricist": 13, "m": 7, "ma": [6, 13], "mac": 8, "machin": 8, "made": [1, 3, 7, 12, 13], "magazin": 13, "magazinearticl": 13, "mai": [1, 2, 6, 7, 8, 11, 13], "mail": 6, "main": [3, 4, 6, 7, 11, 13], "maintain": 13, "mainten": 7, "make": [7, 8, 11], "manag": [1, 2, 3, 6, 7, 8, 13], "mani": [7, 13], "manual": 8, "manufactur": 13, "map": [2, 13], "mark": 2, "mark_record": 2, "mark_record_for_purg": 2, "markdown": 6, "match": [1, 2, 3, 8, 13], "materi": [6, 13], "matter": [6, 13], "max": 3, "max_files_count": 2, "maximum": 2, "md": [3, 7], "mean": [1, 2, 3, 6, 7, 8, 13], "meantim": 7, "mechan": [1, 6, 13], "media": [2, 3], "media_bucket": 2, "media_bucket_id": 2, "media_fil": 2, "meet": [6, 13], "member": [1, 3], "member_polici": 1, "membership": 1, "memori": 8, "mention": 13, "menu": 3, "merg": 7, "mesh": [0, 11], "messag": [1, 3, 6, 7], "met": 13, "metadata": [2, 3, 4, 9], "metadata_field": 9, "metadatacompon": 2, "method": 13, "michigan": 13, "middl": 4, "might": [1, 3, 6, 8, 13], "migrant": [6, 13], "migrat": [6, 13], "mind": 1, "minim": 1, "minor": [3, 7], "mint": [1, 13], "minut": [1, 8, 12], "miss": [1, 3], "mit": 0, "mixin": 2, "mla": [6, 13], "modal": 3, "model": 2, "model_cl": 2, "moder": [2, 3, 13], "moderatorrolerecipi": 6, "modern": [1, 6, 13], "modif": [1, 2, 6], "modifi": [1, 3, 6, 7, 9], "modul": [1, 3, 9, 11], "modular": 11, "monograph": 13, "monotask": 7, "more": [1, 2, 3, 6, 7, 12, 13], "most": [1, 2, 3, 7, 8], "mount": [8, 11], "move": 3, "mq": 8, "msu": [1, 13], "much": [1, 6, 13], "multi": 1, "multi_statu": 1, "multidisciplinari": 13, "multipart": 1, "multipl": [1, 2, 3, 6], "multiple_record": 2, "music": 13, "musicalrecord": 13, "must": [1, 2, 6, 7, 8, 13], "my": [1, 13], "myapitoken": 8, "mycours": 13, "myevent": 13, "myinveniodatacitepassword": 8, "myservic": 2, "myserviceconfig": 2, "mysteri": 1, "mytoken": 8, "myusernam": 1, "n": [1, 2], "na": 3, "name": [2, 3, 4, 6, 7, 8, 11, 13], "name_parts_loc": 3, "namespac": [6, 13], "natur": 1, "navig": [3, 7, 8, 11], "nc": 13, "necessari": [3, 8, 11], "need": [1, 2, 4, 6, 7, 9, 11, 13], "neither": [1, 13], "net": 13, "network": 1, "new": [3, 6, 8, 13], "new_commons_group_id": 1, "new_commons_group_nam": 1, "new_vers": 2, "new_version_draft": 2, "newer": 8, "newest": [1, 3], "newli": [6, 7, 13], "newlin": 8, "newspap": 13, "newspaperarticl": 13, "next": [1, 2, 7, 8], "nginx": [3, 11], "node": 9, "node_modul": 7, "non": 1, "none": [1, 2], "noowneravail": 1, "nor": [1, 13], "normal": [1, 7, 8, 11], "note": [1, 2, 3, 4, 7, 11, 13], "notic": 1, "notif": [2, 3, 9], "notif_tim": 2, "notifi": 1, "notificationop": 6, "notifications_moderator_rol": 6, "notify_record_own": 1, "notimplementederror": 2, "now": [1, 2, 3, 8, 11], "npm": 7, "null": 1, "number": [1, 2, 4, 6, 9, 13], "numer": 1, "nvm": 9, "o": 8, "oai": [1, 2], "oai_record_sourc": 2, "oai_result_item": 2, "oauth": 1, "obj_typ": 2, "object": [6, 7, 9], "obtain": [1, 8], "occup": 1, "occupi": 7, "occur": 1, "oclc": [6, 13], "octet": 1, "octob": 13, "off": 12, "often": [7, 8], "ok": 1, "old": [1, 6, 8], "old_commons_group_id": 1, "oldest": 1, "on_relation_upd": 2, "onc": [1, 2, 7, 8], "one": [1, 2, 6, 7, 8, 11, 13], "one_record": 2, "ongo": 1, "onli": [2, 3, 4, 6, 7, 9, 12, 13], "onlinepubl": 13, "onto": 11, "open": [0, 1, 8, 13], "openfund": 13, "opengraph": 3, "opensearch": [2, 4, 8, 11], "oper": [1, 2, 6, 8, 11], "oppos": 2, "opt": [7, 8, 11], "option": [1, 2, 3, 4, 6, 7, 11, 13], "orcid": [1, 3, 6], "order": [1, 2, 3, 6, 7], "org": [1, 6, 7, 8, 13], "organ": [1, 6], "organiz": [1, 2, 6, 13], "origin": [1, 2, 3, 7, 13], "other": [1, 2, 3, 6, 7, 8, 12, 13], "otherwis": [7, 8, 13], "our": 13, "out": [1, 8, 13], "output": 7, "outsid": 1, "over": [2, 6, 7], "overrid": [1, 2, 7, 13], "overridden": [2, 7], "overwhelm": 13, "own": [1, 7, 8, 12], "owned_bi": 1, "owner": [3, 13], "ownership": [6, 13], "p": [1, 4, 11, 13], "packag": [2, 4, 8, 11, 13], "page": [1, 3, 7, 9, 11, 13], "panda": 1, "panel": 8, "paper": [6, 13], "parallel": [3, 12], "param": 2, "paramet": 2, "parent": [1, 2, 6, 8, 11, 13], "parent_record_cl": 2, "parentpidscompon": 2, "parser": 2, "part": [0, 1, 3, 4, 6, 7, 13], "partial": 3, "particular": [2, 8, 11], "particularli": 1, "partli": 1, "pass": [1, 2, 3, 7], "password": [4, 8, 11], "patch": 7, "patent": 13, "path": [6, 13], "patienc": 11, "pdf": [1, 6, 13], "pdfj": 7, "pedagogi": 13, "peerreview": 13, "pend": 3, "perfieldpermissionscompon": 6, "perform": [1, 2, 7, 8, 13], "period": [1, 2, 6, 13], "perman": [1, 2], "permiss": [2, 3, 9], "permission_act": 2, "permission_polici": 2, "permission_policy_cl": 2, "persist": [6, 7, 8, 13], "person": [1, 2, 6, 13], "person_or_org": [1, 2, 6, 13], "personnel": 1, "pgadmin": [8, 11], "pgadmin_default_email": 8, "pgadmin_default_password": 8, "phd": [6, 13], "photograph": [2, 13], "physicalobject": 13, "pick": 7, "pid": [1, 2, 7, 8, 11, 13], "pid_typ": 2, "pidcompon": 2, "pidfil": 8, "pidscompon": 2, "pin": 3, "pip": [7, 8], "pipenv": [7, 11], "pipfil": 7, "pk": 2, "place": [1, 6, 13], "placehold": [1, 2], "placeholder_avatar": 1, "plain": 1, "plaintext": 6, "platform": 3, "pleas": 1, "pmh": 1, "png": 1, "podcastepisod": 13, "poeticwork": 13, "poetri": [6, 13], "point": [1, 3, 13], "polici": [1, 2], "popul": 1, "possess": 1, "possibl": [1, 7, 13], "post": 2, "post_publish": 2, "postgres_db": 8, "postgres_password": 8, "postgres_us": 8, "postgresql": 8, "potenti": [1, 6, 13], "practic": [], "pre": [1, 13], "preced": [2, 6], "prefer": 2, "prefix": [6, 7, 13], "preprint": 13, "present": [1, 2, 3, 6, 7, 13], "presentationtext": 13, "preserv": [2, 6, 13], "press": [1, 8], "prev": 1, "prevent": [1, 2, 3, 13], "preview": [2, 3], "previou": [1, 2, 6], "previous": [2, 3, 6, 13], "primari": [1, 3, 6], "primarili": [2, 4, 6, 13], "principl": 1, "print": [8, 13], "printer": 13, "prior": [2, 6, 8, 13], "prioriti": 12, "privat": [8, 11], "privileg": 1, "probabl": 6, "problem": 7, "problemat": [6, 13], "proce": 8, "proceed": [6, 13], "process": [1, 2, 3, 4, 12, 13], "produc": [2, 3, 4, 6, 13], "product": [4, 6, 7, 13], "professionel": 13, "profil": [1, 3, 6, 13], "program": [1, 13], "programmat": 1, "programminglanguag": 13, "progress": 7, "project": [6, 7, 8, 13], "projectorteamlead": 13, "projectorteammanag": 13, "projectorteammemb": 13, "proper": [3, 6, 13], "properti": [1, 2, 3, 13], "provid": [1, 2, 4, 6, 7, 8, 11, 13], "provis": 3, "provision": [11, 13], "proxi": 2, "prune": 7, "psychologi": 13, "psycopg2": 8, "public": [1, 2, 3, 6, 13], "public_memb": 1, "publication_d": [1, 2, 13], "publish": [1, 3, 6, 13], "published_record": 2, "pull": [7, 8], "purg": [1, 2], "purge_record": 2, "purpos": [6, 13], "push": [3, 7], "put": [1, 8, 12], "py": [4, 7], "pypi": 8, "pyproject": 7, "pytest": 7, "python": [2, 9, 11, 13], "python3": 8, "python_local_git_packages_path": 8, "python_local_site_packages_path": 8, "queri": [2, 3], "query_parser_cl": 2, "querystr": 2, "question": [1, 6], "queu": 12, "queue": [1, 2, 12], "quick": [7, 11], "quickli": 8, "quickstart": 9, "quota": 2, "rabbitmq": 8, "race": 13, "rais": [1, 2, 3, 6], "random": [3, 8], "rang": 13, "rather": [1, 8], "rdm": [8, 11, 13], "rdm_records_permissions_per_field": 6, "rdm_records_service_compon": [2, 6], "rdmrecord": 6, "rdmrecordserviceconfig": 2, "re": [1, 2, 7, 8, 13], "reach": [7, 12], "react": [2, 7], "read": [1, 4, 7], "read_al": 2, "read_delet": 2, "read_draft": 2, "read_latest": 2, "read_mani": 2, "readabl": [1, 6, 7, 13], "reader": [1, 6, 13], "readi": [6, 7], "readm": [3, 7], "real": 8, "reason": [1, 2, 8, 13], "rebuild": 8, "rebuild_index": 2, "rebuilt": 7, "rec": 2, "receiv": [1, 2, 6, 8], "recent": [3, 7], "recid": [1, 2], "recipi": 6, "recogn": 13, "recommend": [1, 8], "record": [1, 3, 4, 7, 9, 11], "record_cl": 2, "record_id": 1, "record_importer_commun": [1, 6], "record_polici": 1, "record_typ": 2, "record_url": 1, "recorddeletioncompon": 2, "recordfilesprocessorcompon": 2, "records_info": 2, "recordserviceconfig": 2, "recov": 2, "recover": 2, "recreat": [7, 8], "rectangl": 2, "recurs": [7, 11], "redi": 8, "redis_domain": 8, "redund": [1, 7, 11], "refactor": 3, "refer": [1, 7, 8, 9, 11, 13], "refere": 13, "reflect": [1, 7, 11], "refresh": [2, 7], "refresh_from_dict": 2, "refuge": [6, 13], "regard": 1, "regardless": 8, "regist": [1, 2], "registr": [1, 2], "registrationag": 13, "registrationauthor": 13, "registri": 13, "regular": 7, "reindex": 2, "reject": 1, "rel": [1, 6, 13], "relat": [2, 13], "related_identifi": 13, "relatedperson": 13, "relation_typ": 13, "relationscompon": 2, "relationship": 2, "releas": [0, 8, 9], "relev": [1, 13], "reliabl": [1, 8], "reload": [7, 8, 11], "remain": 1, "remot": [3, 4, 7, 8, 11, 13], "remov": [1, 2, 3, 6, 12], "renam": 1, "render": 2, "repeat": 1, "replac": [1, 2, 8], "repo": 7, "report": 13, "repositori": [0, 7, 8, 13], "repres": [1, 2, 7], "represent": 1, "request": [2, 3, 7, 8, 12], "requir": [2, 3, 6, 7, 9, 11, 13], "require_permiss": 2, "research": [0, 1, 6, 11, 13], "researchgroup": 13, "researchparticip": 13, "reserv": [1, 2], "resid": [6, 13], "resourc": [1, 2, 3, 8, 9, 11], "resource_typ": [1, 2, 13], "resourcetypegener": 13, "respect": 7, "respond": 7, "respons": [8, 12], "rest": [8, 9, 11], "rest_api_award": 1, "rest_api_commun": 1, "rest_api_drafts_record": 1, "rest_api_fund": 1, "rest_api_group": 1, "rest_api_index": 1, "rest_api_memb": 1, "rest_api_nam": 1, "rest_api_oaipmh_set": 1, "rest_api_request": 1, "rest_api_review": 1, "rest_api_statist": 1, "rest_api_us": 1, "rest_api_vocabulari": 1, "restart": [7, 8, 11], "restor": 1, "restore_record": 2, "restored_record": 2, "restrict": [1, 2, 6, 13], "result": [1, 2, 3], "result_item": 2, "result_item_cl": 2, "result_list": 2, "result_list_cl": 2, "retri": 3, "retriev": 2, "return": [1, 2], "revert": 2, "review": [1, 2, 13], "review_polici": 1, "review_requir": 1, "reviewcompon": 2, "revis": 2, "revision_id": [1, 2], "right": [1, 3, 8, 13], "rightshold": 13, "robust": 1, "role": [1, 6, 8, 9], "roll": 2, "rollback": 7, "roman": 2, "romantic_literatur": 6, "root": [7, 8], "rout": 3, "rule": [], "run": [2, 3, 6, 8, 9, 11], "run_compon": 2, "run_test": 7, "runner": 7, "same": [1, 2, 6, 8, 13], "sampl": 1, "sample_commun": 6, "sandbox": 13, "save": 6, "scan": 2, "scan_expired_embargo": 2, "scan_vers": 2, "schedul": 7, "schema": [1, 2, 3, 9], "schema_access_set": 2, "schema_gr": 2, "schema_par": 2, "schema_quota": 2, "schema_request_access": 2, "schema_secret_link": 2, "schema_tombston": 2, "scheme": [1, 6, 9], "scholarli": [1, 13], "scienc": [6, 13], "screenplayauthor": 13, "script": [7, 11], "scroll": 2, "search": [1, 3, 4, 11, 13], "search_draft": 2, "search_gc_delet": 2, "search_opt": 2, "search_prefer": 2, "search_queri": 2, "search_record": 2, "search_vers": 2, "searchopt": 2, "second": [1, 6, 13], "secret": [2, 8], "section": [2, 13], "secur": [1, 6, 8], "see": [0, 1, 2, 6, 7, 8, 11, 13], "seen": 8, "segment": 1, "select": [3, 6, 13], "selector": 3, "selenium": [], "self": [1, 2, 3], "self_html": 1, "semant": [6, 7], "semver": 7, "send": [6, 12], "send_sign": 2, "sens": 2, "sent": [1, 6], "separ": [1, 2, 7, 8, 11], "sequenti": 12, "seri": [6, 13], "serial": [2, 4], "series_titl": [6, 13], "series_volum": [6, 13], "serv": [1, 3, 8, 11, 13], "server": [2, 3, 7, 11], "serverless": 8, "servic": [3, 4, 6, 7, 9, 13], "service_id": 2, "servicecompon": 2, "serviceconfig": 2, "services_setup": 11, "serviceschemawrapp": 2, "session": [2, 8], "set": [1, 2, 3, 6, 7, 8, 11, 13], "set_quota": 2, "set_user_quota": 2, "settings_html": 1, "setup": [7, 8, 9], "sever": [1, 2, 3, 8], "sexual": 13, "sh": [7, 8, 11], "shadow": 2, "shape": [1, 2], "share": [0, 1, 3, 8, 13], "shell": 8, "short": [1, 13], "should": [1, 3, 6, 7, 8, 11, 12, 13], "show": 1, "shown": 12, "side": [2, 13], "sidebar": 3, "signal": [1, 2, 6], "signalcompon": 2, "signific": 12, "similarli": [6, 11, 13], "simpl": [2, 6, 13], "simpli": [1, 7, 8], "sinc": [1, 2, 3, 4, 6, 7, 8], "singl": [1, 2, 4, 7, 13], "site": [3, 4, 8, 9, 11], "size": [1, 8, 13], "skip": [1, 2], "sl": 8, "slackbot": 8, "slide": 13, "slider": 8, "slight": 1, "slug": [1, 6], "small": [7, 12], "so": [1, 2, 3, 4, 6, 7, 8, 11, 13], "social": [1, 3], "soft": 1, "softwar": [0, 6, 13], "solid": 2, "solut": 8, "solv": 3, "some": [1, 2, 3, 6, 7, 11, 12, 13], "someon": 2, "someth": 8, "sometim": [3, 7], "sort": [2, 3, 13], "sort_default": 2, "sort_default_no_queri": 2, "sort_opt": 2, "sortbi": 1, "sourc": [2, 3, 7, 8, 9, 11], "source_id": 1, "speaker": 13, "specif": [2, 3, 6, 7, 8, 13], "specifi": [1, 8], "sponsor": [6, 13], "sqlalchemi": 2, "squash": 7, "src": 7, "sso_saml_idp": 1, "stage": [4, 7, 8], "stamp": 8, "stand": 7, "standalon": 8, "standard": [2, 6, 13], "standardisierung": 13, "stang": 7, "start": [1, 7, 12], "stat": [4, 6, 13], "state": [2, 7, 13], "stateless": 1, "statement": 11, "static": [3, 11], "statist": 1, "statu": [2, 6, 13], "stdout": 8, "step": [1, 2, 7, 8, 11], "still": 1, "stop": [7, 8, 11], "storag": [1, 2], "store": [0, 1, 2, 4, 6, 7, 8, 13], "stori": 2, "str": 1, "stream": 1, "streamlin": [3, 6, 9], "strict_valid": 1, "strictli": [], "string": [1, 3, 6, 13], "strongli": [6, 13], "structur": [8, 13], "studi": 1, "style": 7, "sub": [4, 6, 8, 13], "subclass": 2, "subfold": 1, "subject": [1, 3], "submiss": [1, 3], "submit": [1, 2, 3, 6], "submitt": [6, 13], "submodul": 11, "subsequ": [1, 12], "subservic": 2, "substant": [6, 13], "subtitl": 13, "subtyp": 13, "succe": [1, 12], "succeed": [], "successfulli": 1, "sudo": 8, "suffici": 1, "suffix": 7, "suggest": [6, 13], "suit": [3, 7], "suitabl": 4, "superus": 8, "supervisor": 13, "supplement": [6, 13], "suppli": [1, 8], "support": [1, 7, 8, 13], "sur": 8, "sure": [7, 8], "susequ": 1, "switch": 12, "syllabi": [6, 13], "syllabu": 13, "sync": 3, "syntax": [1, 8], "synthet": 4, "system": [0, 1, 2, 3, 4, 7, 11], "systemd": 8, "t": [8, 11], "tab": 8, "tabl": 8, "tag": [6, 13], "tail": 8, "tailor": 13, "take": [2, 6, 7, 8, 11, 12], "taken": [1, 13], "task": [1, 2, 7], "taxonomi": 13, "tbh": 2, "teach": 13, "team": 1, "technic": [0, 1, 3, 13], "technicalstandard": 13, "technisch": 13, "tell": 8, "templat": [1, 2, 9], "temporari": 7, "ten": 13, "term": [1, 7, 13], "termin": [7, 8], "test": [3, 8, 9, 11, 13], "text": [1, 13], "textdocu": [1, 13], "than": [1, 2, 3, 8, 12, 13], "thei": [1, 2, 3, 6, 7, 12, 13], "them": [1, 3, 7, 8, 13], "theses": [6, 13], "thesi": [6, 13], "thi": [1, 2, 3, 4, 6, 7, 8, 11, 12, 13], "thing": 3, "think": 7, "those": [1, 2, 6, 7, 8, 11, 13], "though": [1, 2, 7], "three": [1, 7, 8], "through": [1, 2, 7], "time": [2, 6, 7, 8, 11, 12, 13], "timedelta": 2, "timeout": [1, 3], "titl": [1, 2, 3, 6, 13], "tmp": [7, 8, 11], "token": 8, "token_hex": 8, "token_nam": 1, "tombston": 2, "tombstone_info": 2, "toml": 7, "too": 1, "tool": [0, 1, 6, 7, 9, 13], "top": [1, 2, 6, 8, 13], "topic": [6, 13], "toronto": [1, 6, 13], "total": [1, 6, 13], "total_volum": 13, "track": 6, "transcrib": 13, "transfer": 1, "transform": 1, "translat": 13, "trash": 12, "tri": 2, "trigger": [1, 2, 7], "troi": 2, "true": [1, 2, 6, 11, 13], "truli": 1, "try": [1, 7, 12], "turn": 2, "tweak": 3, "two": [1, 3, 6, 8, 13], "txt": [0, 1], "type": [1, 2, 3, 6, 9], "typic": 1, "u": [6, 8, 13], "ubuntu": 8, "ui": [1, 3, 4, 6, 7, 8, 11], "ukranian": [6, 13], "ultim": 7, "unchang": 1, "undelet": 2, "under": [0, 1, 7, 8, 11, 13], "underli": 4, "uni": 6, "uniqu": 1, "unit": [2, 6, 7], "unitofwork": 2, "univers": [1, 6, 13], "unknown": [1, 3], "unless": [1, 7, 8, 11], "unlik": [2, 6, 13], "unmark_record": 2, "unmark_record_for_purg": 2, "unprocessableent": 1, "unpublish": [6, 13], "unread": 6, "unrestrict": 6, "until": [1, 2, 7, 13], "uow": 2, "up": [2, 4, 7, 8, 11], "updat": [3, 4, 6, 9, 11, 13], "update_draft": [2, 6], "update_tombston": 2, "updated_draft": 2, "upgrad": 3, "upload": [3, 7, 9, 13], "upper": 1, "upstream": 9, "url": [2, 6, 13], "us": [2, 3, 4, 6, 7, 9, 11, 13], "usag": [4, 6, 13], "useless": 3, "user": [2, 3, 4, 7, 9, 13], "user_data_upd": 1, "user_defined_tag": 1, "user_object": 13, "user_profil": 13, "usermod": 8, "usernam": [1, 3, 6], "usr": 8, "usual": [1, 2, 7], "utpress": 1, "uuid": 1, "uwsgi": [7, 11], "uwsgi_api": 11, "uwsgi_rest": 8, "uwsgi_ui": [7, 8, 11], "v": [7, 8], "v1": [1, 13], "v16": 8, "v2": 8, "v3": [6, 13], "v6": 2, "valid": [1, 2, 6, 13], "validate_draft": 2, "validation_error": 1, "validationerror": 6, "valu": [1, 2, 3, 6, 8, 13], "var": [8, 11], "vari": 1, "variabl": [1, 6], "variat": [6, 13], "varieti": [11, 13], "variou": [2, 8, 11, 13], "veri": 7, "verifi": 2, "version": [0, 1, 3, 6, 9, 11, 13], "version_id": 2, "versions_model_cl": 2, "via": [6, 7, 8], "videorecord": 13, "view": [1, 2, 3, 6, 7, 13], "virtual": 8, "virtualenv": 8, "visibl": [1, 3, 7, 13], "visit": 1, "visualart": 13, "vital": 1, "vocabulari": [1, 3, 9, 11], "volum": [1, 6, 7, 8, 13], "voluntarili": [6, 13], "wa": [1, 3, 6, 7, 13], "wai": [1, 6, 8, 13], "wait": 12, "walk": 7, "want": [1, 6, 7, 8, 11, 13], "warn": [1, 4, 6, 7, 13], "watch": [7, 8], "watercolor": [6, 13], "we": [0, 1, 6, 7, 13], "web": [7, 8, 11], "webdriv": [], "webhook": [1, 6], "webpack": [3, 7], "webpackthemebundl": 7, "websit": 1, "welcom": 0, "welcome_sample_commun": 6, "well": [1, 2, 3, 6, 7, 8], "were": [1, 2, 3, 6, 8, 13], "what": [7, 13], "whatev": 2, "when": [1, 2, 3, 6, 7, 8, 11, 12, 13], "whenev": [4, 7], "where": [1, 3, 7, 8, 11, 13], "wherev": [], "whether": [1, 2, 6], "which": [1, 2, 3, 7, 8, 11, 13], "whichev": 8, "while": [1, 2, 7, 11, 12, 13], "white": [6, 13], "whitepap": 13, "who": 13, "whole": [3, 6, 13], "whom": 1, "whose": [1, 3, 6], "why": 1, "wide": 13, "widget": 3, "wikidata": 13, "window": [7, 8], "wip": 7, "wish": [1, 7], "wit": 13, "within": [1, 3, 6, 13], "without": [1, 2, 7, 8, 13], "word": [1, 3], "wordpress": [], "work": [0, 2, 3, 6, 7, 11, 14], "workaround": 12, "worker": [1, 4, 7], "workflow": [2, 3, 13], "workingpap": 13, "workpackagelead": 13, "workshop": [6, 13], "worldcat": [6, 13], "would": [1, 3, 4, 6, 7, 8, 13], "wp": 1, "wrap": [3, 4], "wrapper": 1, "writerofaccompani": 13, "written": [7, 8], "wsl2": 7, "www": [6, 8, 13], "x": [1, 8, 13], "x86_64": 8, "xxx1234567890": 1, "xxx1234567891": 1, "y": 1, "ye": 1, "yet": [1, 2, 6, 8, 9], "yml": [7, 8, 11], "you": [1, 2, 4, 6, 7, 8, 11, 13], "your": [1, 6, 7], "zenodo": 13, "zip": 1, "zshrc": 8}, "titles": ["About", "API", "KCWorks Architecture", "Changes", "CLI Commands", "Configuration of InvenioRDM", "Customizations to InvenioRDM", "Developing KCWorks", "In-depth Installation Instructions (NEEDS UPDATING)", "Welcome to the Knowledge Commons Works technical documentation!", "KCWorks Infrastructure", "Installation", "Known Issues", "Metadata Schema, Vocabularies, and Identifiers", "Reference"], "titleterms": {"": [1, 2, 6], "0": [3, 8], "01": 3, "02": 3, "03": 3, "09": 3, "1": [3, 8, 11], "10": [3, 8], "11": 3, "12": 3, "14": 3, "16": 8, "17": 8, "18": 3, "2": [3, 11], "20": 8, "2024": 3, "2025": 3, "25": 3, "3": [3, 8, 11], "30": 3, "4": [3, 11], "5": [3, 11], "6": [3, 11], "7": 3, "8": 3, "9": 8, "A": 1, "In": [6, 8], "Not": 3, "The": [1, 2, 7], "Tos": 2, "about": [0, 6, 8], "access": 1, "account": 1, "ad": 7, "add": 8, "addit": 8, "admin": [8, 11], "ai_usag": [6, 13], "all": 1, "an": [1, 2, 7, 8], "api": [1, 2, 6, 13], "app": [2, 6], "appli": 6, "applic": [8, 11], "architectur": 2, "asset": 11, "attach": 2, "augment": 2, "authent": [1, 6], "autom": 7, "baseservic": 2, "baseservicecompon": 2, "basic": 7, "beta10": 3, "beta11": 3, "beta3": 3, "beta4": 3, "beta5": 3, "beta6": 3, "beta7": 3, "beta8": 3, "beta9": 3, "bodi": 1, "book_seri": [6, 13], "branch": 7, "build": [7, 8, 11], "bulk": 6, "can": 1, "celeri": 8, "cfg": 7, "chang": [1, 3, 7], "chapter_label": [6, 13], "class": 2, "cli": [4, 8], "clone": [8, 11], "code": [0, 1, 7, 8], "collect": [1, 6, 13], "collis": 1, "command": [4, 8], "commit": 7, "committee_deposit": [6, 13], "common": [1, 8, 9], "commons_domain": [6, 13], "commons_search_recid": [6, 13], "commons_search_upd": [6, 13], "commun": 6, "compon": 2, "compos": [8, 11], "config": 2, "configur": [1, 2, 5, 6, 8, 11], "contain": [4, 8], "container": 8, "content": [6, 9], "content_warn": [6, 13], "context": 8, "contribut": 0, "contributor": [6, 13], "control": [7, 8, 11, 13], "copyright": 0, "core": [6, 13], "course_titl": [6, 13], "creat": [1, 2, 8, 11], "creation": 13, "creator": [6, 13], "credenti": 8, "css": 7, "custom": [2, 4, 6, 13], "custom_field": [6, 13], "cycl": 2, "daili": 7, "data": [1, 2, 6], "databas": [8, 11], "deeper": 7, "degre": [6, 13], "delet": [1, 2], "deposit": [2, 6], "deprec": 13, "depth": 8, "detail": 6, "develop": [7, 11], "dig": 7, "disciplin": [6, 13], "docker": [8, 11], "document": [0, 9, 14], "doe": 1, "doi": 13, "draft": 2, "duplic": 1, "edit": [6, 13], "email": [1, 6], "enabl": [6, 8], "endpoint": 1, "ensur": 8, "entri": 7, "environ": 8, "error": [1, 8], "event": 1, "exampl": [1, 13], "extern": 7, "fail": 1, "fast": [7, 13], "field": [6, 13], "file": [1, 2, 7, 8, 11, 12], "file_loc": [6, 13], "file_pid": [6, 13], "first": 6, "fix": 8, "flask": 11, "fly": 7, "folder": 7, "fork": 6, "form": 6, "found": 8, "framework": 6, "from": [2, 13], "fromconfigsearchopt": 2, "full": 11, "funder": 13, "gener": 2, "get": 1, "ghost": 7, "git": [7, 11], "gnd": 13, "gotcha": 2, "grid": 13, "group": [1, 6], "groups_for_deposit": [6, 13], "handl": [1, 13], "happen": 1, "hard": 2, "have": 1, "hc": [6, 13], "hclegaci": [6, 13], "head": 13, "header": 1, "homosauru": 13, "how": 2, "html": 7, "i": [1, 8], "identifi": [1, 13], "implement": [6, 13], "import": [1, 6], "includ": 7, "indic": 8, "inform": 8, "infrastructur": 10, "initi": [8, 11], "inspector": 7, "instal": [8, 11], "instanc": [1, 7], "institution_depart": [6, 13], "instruct": 8, "integr": 6, "intern": 1, "invalid": 1, "invenio": [4, 6, 7, 8], "invenio_rdm_record": 2, "inveniordm": [1, 2, 5, 6, 13, 14], "isbn": 13, "isni": 13, "issn": 13, "issu": 12, "j": [7, 8], "javascript": 7, "json": [1, 13], "just": 8, "kc": [1, 6, 13], "kcr": [6, 13], "kcwork": [2, 4, 6, 7, 10, 11, 13], "knowledg": [8, 9], "known": 12, "layer": 2, "legaci": [6, 13], "level": 2, "licens": 0, "life": 2, "limit": 7, "line": 8, "linux": 8, "load": 2, "local": [8, 11], "log": 8, "maco": 8, "make": 1, "malform": 1, "media": [6, 13], "meeting_organ": [6, 13], "metadata": [1, 6, 13], "metadata_field": [6, 13], "method": 2, "moder": 6, "modifi": 2, "modul": [6, 7, 8], "modular": 6, "name": 1, "necessari": 1, "need": 8, "new": [1, 2, 7], "newli": 1, "nginx": 8, "node": [7, 8], "note": [6, 8], "notif": [1, 6], "number": 7, "nvm": 8, "oai": 13, "object": [1, 2, 13], "ofr": 13, "onli": 1, "orcid": 13, "organ": 13, "other": 11, "output": 8, "overrid": 6, "own": 11, "owner": [1, 6], "ownership": 1, "packag": [6, 7], "page": 6, "pagin": 1, "paramet": 1, "partial": 1, "patch": 1, "path": [1, 8], "payload": 1, "peopl": 13, "per": 6, "permiss": [1, 6], "pipenv": 8, "point": 7, "post": 1, "previously_publish": [6, 13], "primari": 13, "process": [7, 8], "project": 11, "project_titl": [6, 13], "provis": 6, "provision": 6, "publication_typ": [6, 13], "publication_url": [6, 13], "publish": 2, "pyenv": 8, "python": [7, 8], "queri": 1, "queue": 8, "quickstart": 11, "rdm": 6, "rdmdraft": 2, "rdmrecordservic": 2, "read": 2, "rebuild": 7, "recommend": 13, "record": [2, 6, 13], "record_change_d": [6, 13], "record_creation_d": [6, 13], "record_identifi": [6, 13], "recordservic": 2, "refer": 14, "releas": [3, 7], "remot": 6, "repositori": 11, "request": 1, "requir": [1, 8], "resourc": [6, 13], "respons": [1, 2], "rest": 1, "restor": 2, "retriev": [1, 13], "role": 13, "ror": 13, "rotat": 8, "run": [4, 7], "saml": [1, 6], "schema": [6, 13], "scheme": 13, "script": 8, "search": [2, 6, 8], "searchconfig": 2, "searchoptionsmixin": 2, "secondari": 13, "sensit": 8, "server": 8, "servic": [2, 8, 11], "setup": 11, "shutdown": 8, "site": [6, 7, 13], "slow": 7, "soft": 2, "some": 8, "sort": 1, "sourc": 0, "specif": 1, "sponsoring_institut": [6, 13], "standard": 8, "start": [8, 11], "startup": 8, "static": 7, "statu": 1, "step": [], "strategi": 7, "streamlin": 1, "subject": [6, 13], "submitter_affili": [6, 13], "submitter_email": [6, 13], "submitter_id": [6, 13], "submitter_org_membership": [6, 13], "submitter_usernam": [6, 13], "submodul": 7, "success": 1, "sync": 6, "system": [6, 8, 13], "tabl": [], "tag": 7, "task": 8, "technic": 9, "templat": [6, 7], "test": 7, "theme": 7, "time": 1, "token": 1, "tool": 8, "total_download": [6, 13], "total_view": [6, 13], "type": 13, "unpublish": 2, "unsuccess": 1, "updat": [1, 2, 7, 8], "upload": [1, 12], "upstream": 7, "url": 1, "us": [1, 8], "user": [1, 6, 8, 11], "user_defined_tag": [6, 13], "usernam": 13, "uwsgi": 8, "variabl": [2, 8], "version": [2, 7, 8], "via": [1, 2], "view": [8, 11], "vocabulari": [6, 13], "webhook": [], "welcom": 9, "what": 1, "which": 6, "who": 1, "work": [1, 8, 9, 13], "worker": 8, "workflow": 7, "yet": 3, "your": [8, 11]}}) \ No newline at end of file diff --git a/docs/source/README.md b/docs/source/README.md index ca3c9d56c..cdfb69f71 100644 --- a/docs/source/README.md +++ b/docs/source/README.md @@ -2,10 +2,11 @@ ![Tests](https://github.com/mesh-research/knowledge-commons-works/actions/workflows/tests.yml/badge.svg) ![Container build](https://github.com/mesh-research/knowledge-commons-works/actions/workflows/CI.yml/badge.svg) +[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) ![KCWorks logo](../../static/images/kc_works_logos/SVG/kc_works_logo_wordmark.svg) -Version 0.3.8-beta11 +Version 0.4.0-beta12 Knowledge Commons Works is a collaborative platform for storing and sharing academic research. It is part of [Knowledge Commons](https://about.hcommons.org/) and is built on an instance of the [InvenioRDM](https://inveniordm.docs.cern.ch/) repository system. diff --git a/docs/source/_static/static_build_process_build.jpg b/docs/source/_static/static_build_process_build.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8ea9a3c7e12e58926b16f07d5647498ffa190318 GIT binary patch literal 249614 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

    YK$@}|2|IlmIo2Kg2_D!U-*JL#d%D ze!~1onH4eq+`jyY<2I_G07D-*r^xGg_O5Z2Im+tx!XvXZadqm*Xb3aLe3YDt^@*jI z`uYP+b(`kUSIw<-u+1$CB`Z>3ooI~|d7x3|T0TA}gW&!* zuM681{E@577?jE%+Wp{=&V4~I;9Hn4-yus-`Ms@9(#lB~qK>hj*!>0}Y&7*0PH4{q z0zEW0_>)1n5!6aS6`tR)=*J9wxSj3mg|`&=Os9Zj1*z8*je=1&VG4a+`YhZoMY^5v z8RMT+_t#aaWR0ijU;4>$IZYKmAdGR5okR#FlJK#8dkk!RcNw{Cmp_7l>d?#6a<9el zWDd_AYUxD(Dfi;sy+ASBQM4*9ZCahb zYbs1!We6g^Izi(}Lnrfx_r33nd2ix)G<9U08hgI@VHAkc;}p%?{WsrEbp&?n&vTa% zD+X_}*KfmOXMMNpvgDPZ)HQo68{Uyz*cJ*-V7w9X{)&0&s zjDqFbi>1+ICbS++Vvt4iPf2b=8W;Ade*4Fc+s>^Vv$aNn)xRV?N-d{$1n5?qloH+z zZ>}yY$yO>rtoLutM-36V6>vE-Y&yajOzP5qX8@8##IyN`J7N+=M<`iFbMy3#LX}dMqVN05yJ3R~?H@oNsQDft^igS<5x5b1(jS z+`s5S|JQ(x&;5x!z1|VA*OchNB&iE;pun-2@fNPj$xFfI{{2aXO6WR)p>%<6RcHc9 z#x}dKvP!sXCbLx0##d{sKsT~GXR%EjuB7ELmamhvkG~C9ziBBp;LblA>@{&Gaze+W zQXGIoVVb!8z)=FCRK!nDCyt_;?FYYJRyY)$M zJ!$N_!8b$H4?b2ZPw7{GbqCdj-kG(VZ?^YKH^d=dJp7*ij+s@lOTFVROq?22sG+9` zWOkMP#+d}EC}fOId>Rk#uKGi*xPgIr5v)gqF;u)v5Aqr716Lac2pmXJs|G!;6(!cT zgm29gjvcVAi@oD{v-v^osVaq7dUDQckNN29EX4~-m|GH;Et<9FDTW(NxB0i4-jpa5 zu)!UP&o8b}RspwAW?#vaHNy~mIT@}}Z2hsKPfhyif`7$h<_}LH@J$Mw#P%|eMEFC^X3#GG#*pdLRARbd9{|OV+)_Q1 zTilpGC#{r^ff5U~u*6BBxfb)lccl=lrsgFsn!diztdGAmVkBpg;6fyK>j1zCL$}e~ z{#qvgte56C)Un=+y&qlRj4!&Zm$!Yh8yrm9)N}}z8cjGvZna4pMEN*0ySU&yZyx?8 zc(Hypte;)*X0af*z43Vy-HF>kwhBA@ZF#4?6d4)P%$S2>%>^Z~kPy$(QK5t7wZm07 zTl<^*YPvp3{m94I+S!CT-AXyykM)LSUAeyMz7BC~QT1CC;bl%PReF&^2aRkbpExpi zX1K3D0llCmzZ)pr+?p_)VXoH<0^^bPp#a$;I8ZA$B^XzGVwK+(LHD57a(OU+kk=Ax zITfA-|F&>;ye%Yqy72B|qo#-%PxAl4-g`zhm9}leI2Ke81~GsXaj4P-q!XAKDFOyW z2%)2NLJz&$=mZ1|B{T)3BoIu11PDc>cj<-@kluT*zM1>`W}ca~?)5zD{@y>|de@sD zJIP*Wu6MK?o zz$tBmM_Cilr%1K+9hkp}5RNF$d32w_VyYV`TCzBsLUxJBHsPp00j@%+B*}`yf$^Vy z+G65Njf(mQ%;O^SNVaGKt&_7P2B!Osnp8^~=pi>_Oxt8L!kH;!b_)|!WR1_U#utD* z>tm98#EQ-0vh^neupT#XCh3EsAJ%Up@1vpR{vr`3XyHFHGG8FsxyC!SgfD4hjapCj z(-`uu*k1&9v}R_Of->|4PF2q~MhQ2?T6A>&po;a>N(Cw{ z4-bzIr~FRoIRj?^Re6JUnMTU?e}a5m0PIWUxunD`R%>HIz`8aNSrhX)uWY!pdB(;h zW!>UNkj9n2G=TI z(}QsZJ}0XP*FG7;c>Rv3crZNBq6e>(RrIja~DRWyG?5rlVcKBTT z_${AG8rHmB*+W$W^UbL^!N@9)Gcf@!*g%hOF+47~Qs(+7 zuO$%}h4Hc=BF69aq{bZeQWbDq!v3`&@@C;%u^LFAAH^eZa1v8Cvz~Uvy;T5+|mCkkcR{t@>54h- zi>U$D(o_9-#=lAnR#my@v!_>--sAc(v8XH%jbKs`RM8A733iV3kWDKWn2JI#Es;E% z{OHtq`C;z*V6g6?b#&#q;wG_`2?#e_|prI>1k-;?ZOWp&IMXWbrBPS%*O+gGlRcgRI28XqX8 zXA*lY+25R+2_Jl=UWotZ^}mH-KUxUxUH#Oq+fiU+Lr-e{LE}*hNMlbT-_U%I60Tad zOgUojy~-Pu?5obRUQF=9pP<~U_dC2HQ#pISYx@Qs4R)50X>{_2e4f~5<@6MGCe^EHb@_LG) z;iGvEJq}Kyl<}xHh*(OXu(~;bs*_*gA{9N>t?l_&)^+bx982^gvLjMLV?X92+0GB> z%n#i8;@kx=}hDFx72-QrL=MKA4y?eB^xUI+o=V-y{;gonX0mZfkeKqnmP zjz5uMuJs6fT45?N_Ns9|XfHQn$sJWxWV?$P>MnX^bj%JW_16K=xLjekOazkwk|(Dh zn8Q&=mzJ<9ah?H;2{SqpbNf%O>GC7e4DLVs7f1&7wx>k6F-B;gjusS$C?USqxJY;h zw$7~>p$4|C+5><%3&5ennFTTA-RRlxQmUUvt{f|A&bJk5XdbeEp44Ppy+~{X-C&VZ}%#L!S+`5pNMv#6zw;bj>UwVYc)KDL%FvG+VD(8 zfFCrg(jic0(MKcJv=>UU?tJHxvfD!gVK~C-0a1GX&POOc(q>fvVvE zCVwynCZetLlpWqMHy9ev^N;p`AjU{(wwA%P8Y?c_YvyK=|t;$7i^n~X`EWXdPeq5Bb=koN?8gX%$ zoZW6@<1!}lHBdBS)n_h3x%0%x+99ip$y(GZ&M~hRY$(>VRVtUumLw@Rk9!37^3U9Z zi4f*+cUazSu=RmVE9)1hPhy}ORk~Ap{J!iy28g~w!`J*Oz%#;Iy+{9@-0Eub(KtL1XU@5@BxZ_Z2E%x~IdBySD$fVgq8+=pxP`@U>Me3CS zF%Da|Rnubdr^e>2{aswS_ko;%Xn3dCz4=z!P$ww*i4i(QxdozphofjTp%9ZhTt0L!IK2DbVRSW)>C!(A~<)lioRZ_ucnx<;Gs*$$*2C~!-f#-QuC-MFPNz720Az879S+rQQw)-TdFG$(QkgJ+9C zNRRETuqDWPel$D?JmrSg>~44Oc~`pTny|1`clGod$;yf#{J@~m?B(ZyCIb`(tmr84 z5!B&lOZPnp`OWTrCz~_ZCCNtSD)TimMJDQ8R!SCaI%L1n($ZDipM4$G9oiOha)I2R z9oH~8ef_$woXb#AG8`*hR+V719tMP;?tR`@E+}pv_X*2wGA_I_zQP-FW9-8_Op1_z z7o~AP*i#`%v@|G?Tn-KpW@6XMb@MNvqpH0#k)b%9~vq*h{MnbBU-kF$KG5qqH*4)A@pzH$zH_+PFb*b`dQY9F( zIQ4P9i0E0z7TZ#DhiqO6v)#ww%=A-Z6tW_UZQ=*5^f|yw*VUDKlaqMLSRWc4$ke$l zjzs?KYH;qr`@|A-TF3+u5@^zpm1aUU2G7tGfFdGM;&Shj#9>jyXeC7NUgdk!$ z2&@K)0QBKLU)>9=-qM>NG*9#8Tt#YiZV2ssly;Eqi<_Up&(oTt5S#QU^^za9by>$Aj zyFCkI*JGWG+xiLE8x4$;>0wJBBIcfShGyA#W3^jFhMA}kH?Y}gIRVtq>gJBq%=YKF zFHI)~Te)bhC^9g$61#$_yd^E=&xlOgcKYAJ7g{1D;=&_|xlWlH@Z-$^!bJ2k{qi zq|?dGh9$V_5SmdH2TmQWwfl$$9=B=nYflLu>wI+Pg;w|EnfkTx?(6PY@VS9EWH`|s zw<-&)UEjCgH%fcJ@6*NZFmIH%d1eG8_J6c!T^)DOsS~3zuX>qrs7tC6DjZWD%If4G9xCF26VTXxrBM@06k%J{*-YyAxlZg_piOPUOqr)J)JD}(To*e z?=dA-V7mav8)DbnGZU!<`-FHm71`lY=xJPrHqXc6Enhmm)&73-_V|vba7G*yYk#eg!1lZ;RZGtJm_Ox1bieR=scl@0 z!cE{XN1yu_FqlU~lH0%L^Of&^e~S4Z(qjK8tIhmdjqT{WbF5xmD39CUQe64q0(ZL; ztK;is<5iV<4ud&Ih_FU(c;dB-{~r4);MSSCqg@pmf~?wUhJmI z{Z|`ecsbpD{rq=6QLP2bSRUa#1d|+zGp249JPWN69nux(HgVow;2N!;@gfWy%f70& z+A9BbR3;%_{X7|ovCd1aF@(6+lix+iwx;<>eCqKPX<=n6zIV^sJ04QaWDDa#X*8cF zkJly^_kbU1QdQx@2Nf}_$ANb7F%+jPC};DStRe)8>Rps z8;;Ioi~hJ9mF2%VBJUl~?VONgy_4|Tsd;;j+F#4iM%7bj^1iL|8Dp3n8FCg%IOz0e z-`T(RgJ#Asr~H?N#h|15v4)kshI)hch95L)qd#b@&Ph~c(owzZE)^(MBWeKa3NCb3F@PVqSYeUjg+u!ulS_^KCiPTujWb2nKm7IL&G9K~v zjVh|`*AE&`*p1oceJu@Pv{8O&740(G1$wzZ7ri5_4&*KHm_X5>g`%9X?x zDLjCuT&5n=1iszm-H}=Dy1}4xQ37)P(6K1RaX^Dmx~*VZ=k&QnuNm{OvQt#YyH&v| zd<(p`RbRj2{0j52AImnJxThgAGl28Q33uUD{sJR_KVm&mYNbQeL3rdZYK1FfvfB7^VA4PR`rD$G3wpJsZLz zm}ik}+4#Ao9*W4Ybf_gejYeef_B|Tx>oXdB8A(y=sdxU&*^Eoe7K4JaNJ9_f+>T68!#)uprB$z?6e*GI;pW1HxH^vU3C zF8VOhV4M3FQdR<@PnW;^cFpsr$pz&lJ(Z(y=U$u0JIeCVg#s>D3_hwK_Ig3wZVn%` z^m_q0##JHG0EkBw=EkGq18zRZ3AgC)yOe<)2T{Q+&9PtVw8If^B&pM1rEP}Pn^Qp< z9%tKUu1WWnkrM&~!`Ss0O&P^Q|8LZ(Urg3cS!LbrGKcTa9XzA~EuWk5lr3gg1&woLgNno+T4!F)^yd}x2v_I54NFNM^+~yu*u}Yb10Dx0`;L++ zvpU;wMxfx2WR$s^wOsE@>U%S%e z-`W!8rZ6Su%8#1^ndpNSQI$*6@kZ5Ks~D0$GKP|xs^T!n9^=%UyT~@eY`>i zJ;}_JF_`bdgEOYTPmLhJ@= zCj$SZkFJG%ddi_fb;yfVd42-zXh`dam_(@M1OU;a>!z_@D^!0X=R=YOjas{|zMSSb zd)4=fVqI@8)&&H?v?~x2kqP!K1lH>XCvHUd_2T+jDn8Tq@%Na{v2>`gz^8r{6T85= z4OsIql^YO=Iza{RhtVlnX-ZY4rD5fzom~quofXL@qnSr%#uH-WBliAEZy%bz9!jyD z8E;D!*w!wlQB#Oj@bIalcQDvF{avEsFxRUFX`iJ1X;sV!cv}7q0 zWqd*$zBjDv1sOL`L28NBHc|%s`i=~XW=A6(1?grRMxK-+KVovJ7kAWiN;_DM<;oxczX{B|7AR_ zM|~)j;Q_H66X&eo(GxiAt7aMGJ-h9HbQ(B^8_uvC&sE)7QO;E;HSJk&4X7wyh)B6D z47Im?(mWiT1Z*F{7G=8hY|in}K^@xSnCnG)oGFYN1p>gfVJdD`t7^+qJNxdM zVH#BmA<|rBN^ASPq=dNhgD(#fV*49A)I6Jgoxt%slTt;`YAxn!tmz*@Zm=8bm77wA znUqp;W#XW2L>VR~Cf|oE;2OlP?6K)>=*Qv^Wzp!tPGUXSSs$=&d5j^K%^1wZXG^PI zw><|w_KOw;j5;kY<;P3{9>iIzi$;Gw;>4_+jMWw8>`?394JcS;*6;IsJ4JDIz*Wnk zHJ4ycg2UWiHwX91=I1u6Chh*M5#vzUBh`qU(lF^SGa(3%YutFjSErm4^*%rU)u5{W z+1+#Y(8|+3I`}^LGhgVpY`RUaz@wpuf7zaC?!G>BIv(9o7MCMIXcABU^nu|o+db|9 z#;L*;tL}ff!jw(3KZ?y+d=OTh3oLZeyL_ln7re|%-=r9iGm(jnl94uuSjlmznc6q` zfR{4zUJI1ULLC5u-s#m6liWvg5*(IQ^SPV!MjFzmJnOrbJ$OS&MzotwAxGo9c<{?p zcB@dotN-xIga&?MXUyIB@nFFt{x92qcxC&O+#2Fp*p<}DtS?G`+9v!XKyR;3{?+_n zw*Lr_r5KrPiaX6{*k2Iioxf~ZRN`aWlsiQDXgWW(xcP<37G9mD#PVSS9Jrfl=8@|c z*?gt@w@yeo7=tu$!Z7^h%C z3=o`JBTTDAWHYEhSovdJ>Ve*M4qEX^Q6-~qUR>mRL32r`^prOSXK;UW9gq8xT7c~M zO2TGcWX~`%vs`ECJP+QdV1;)K!7s_K>?ku$OtXAwN31A>UNTzjEfxN6>Les0B-T-Cnx$Y>5lV%&vFEum*t(6)o)o*;@e=5VF@0inG7Z7Zg+J zDPwT)xeDL2;3-1ZfeJ~I|3Y!`t5aVO8>qt)@5IKJ=D0@(4NorQ{rdO$&VT=T_ppt{ zcvApCv{BYEqH^M;#G8&4o6i??+knB$(fWWce0#<&0_L8Tm(Ji(Ja<%1i1Ksq@T;rsJ+~s zNBw@FVF52NTeEaabDaEWPqsMU^VWK|!H3_T9%Tj~;FV?ZMS=ys{6#7KuNRluXMMy_ zDlFb`l0N{z{_Q|*{&3!J_h@XPq{$fC_`2j4n;D&{P^oW*`Hh0SyaH<}c^fDUN}a-} zR9XxN6tDI&#=f5ZqyJ1|a`=w(ys&Dq+`q)OB|3DrEq=Wy@GH#)W+%jY7bqCYcrQoV zDC3qar_*E9E@j}+ybg~bwf3wG=GvUW2Q7-p93b%k9a>K#hurj*$0Bl##k$P9xnnu! z6*h5`!qrdJ)s_w6dvu2s&aeaz!i7_HQG@1=4~aNUUj6PMh;KEz2k-}?_H%o=;A4Nf z2j#CXIauB$T79p7CMdH%7N{6yq9u&COjNY55d>1Gr2^_}vtjAO1)>+TzxC0~WLo() z3_#|F8{K59N{4@LqaP6cq*JlPr{|T?^0;}OD$8KehZJ`H%m|73w8kRd#2P0EOYtw3 zFa)qHM}D4lfyX;iI1n+jhMH8NDzG}}q|?(htlj08Li*ZRvHQTzEen?zOyEeD4^qfs z2BB{rvzP}b!sf;|4u=MQy$u+B?0;peh%8%(awE)7XK>X~J$|(Oi%!stx3n52h=o7V zqUp(bF_WCe_R8caR7b#jtBB3j#5EJbe%)*tZ%X8tu4>Woi6&O!YBCahf>`Z&$4Y|a zG*AVL!=S2`J-U1saB`r?z+6~DSY*e>!FY~_H!Z9B2;kPf;BNQUdC2f(8q3|->VhxoZHq^ zF|c?$z{DEshhZi^4U|C>Gom3j)^1}RvcKX}-{=0ZVyx(WUT$vqyWOEpjktKWv>__` ztx%wndV6F};<+&U!fq_H_qt0|d#zbI%&-OES`*%H#(tLiu`G4Ndrbo+!8*w~D(q6% zWsdFuJP{1xk(A~&IfnOLO}ge-Eb{Ej0~wH!aQ8O=7HIN$PTk=KJ;U^Qk^(C8Fi|YY zbv4wE%hzxT-z9rD#=BX**F+LT*%L-9c0Gj~C#l0wTYO@%(X4iwA_r=)Vy%BW3jCv> zgIc2TpQzdV+XksSFYGkov{s8FR5b@zq|#ZEpmnrG<2NK|xdDy+uJx0V^l_6X@`Upy z=<2&RcAHu*VacKcQ$Z+^Du64;H@W53Fj2r*AYAr4l=gy7V_QqmD>149_~`4f)#=F- z#zjn1{La_K_$o-k-otNSW>SxIR=(1l`}lvS9+`nrRw`)}IfSnXJc+B2zz@|JBJcHY zc??N|aMM4Iv}?s5cfe*o_y{pj#{(6N>UAL^h>fb6LNNuly9^9W8W z-t{4?rsFN8k^|Of;xtpOa_+pRQTRufcjfonOrkw3HWQl; z*xA~)sLMKX zc%6MBujZ1|O@+rjo#WRs{dI$Hr0q-8>}#jnAWf~*di0tPDa|c2;j4iz#S?yWK+3Bo zr!V_-Zfw}6f$Sv5yogs+kg00!D*;|!2j*e(HRKS8N^nk)G5B^N--~%);;Yd+Z2jE~ zW=knlHv3qy5%e8lbXdPhIIZ6KYM`jGbQJeR1i-k%f~THq zA2cFkjp?W{Yd3-50ued@?FoT z7wXp|Cn}{Xg0nlQmLk)gwfXX*w8_Y0+1$K-WA6Hdg-a=TzYxXUv~LA_+Y$MJc%XA#26XU;_SLF+0M`scV<&*9Rz5* zVI>p-a3wwkJv5=^NFQhv0VGLBqvAnhbD(~GgHY|r>}vzGLMaL+FSfm|HNC`5v>fns z=!qt`=`5zB&{ZuM{@aw5T08yV8zVg6`SNz&f!1Q3m;Ct%y)YK z`IGJ&Z*1xzGKXdAwDjdDyTVhbI;IR&5|gz^tn7(*;%tEl^WVXEgB*x`DDH45n<}QB8fa!9>n`t z*|x}^h<`7xdpsg#7S3Ynjy?09@}B_j%sapvY*L+~du@r8B=A);G43MQ_M?R@n(A|$2TWmko!(%Bc>J|Q^g zmbiYo3gplSH9i>uMxEc|vq`N^T*6_-j|pl@e7PTYxyKI-u)7r2-?2b>WC_^~puPgC z_ELSOo7k=EpMc%SF9G=_?HM5Aa*+;OU4WVyu+GKQEp^VQR>5g&nH#F&+r0O-^RA6P z3%>a3o~y4}p843Zn~;EMg%==x$x0;iV13wd9T6Zj@rtK1Uh*fWl2tD!2K@X=^7a?U z#C1qLl4IE0165|(qvZz;6+rR$!J8ytgBR>{xni%)jR4+%8q0+>eBDi4Yu#I+mW9@6 zinnL#f-MpiwiTaIhlBStmtXvSWd3`h3yUP@B7}rCw7Q4jHp560Dt~HKHY>%a>^PT{ zkL0Cf*JNuuC8BZYJHyU+%k5QEz^@~CWVflp=Xnp7N6(Zwd?T4jPG}AbI$Ikqe(k!V zcy;LZX-q+qe@fprbty8xFa@?CZA_{)sRtGec9~@P|ECN8b6k?Qe18o=KEQ5A(~d0C zna3#IRq0_jK2m$V;!R`pkB7M++F*qilOoZryycfsp=H;J{ij=PqXYC(|t@U9oq&JyLa{g-F1T0@2L-O(+& zxIE!sLdU-yrq)0UXGwwmU|EA*D-iB5y%w)o@yXgXTpo};}4Ur-t0!$p?u>h*`FX+O`KmA>sB?cwW;{k%{q zXQUC^W4@MbOOgYtnY3ZoUb=ZrKUPmicyx~4yLUc2_-J?C0jY`80TKcfmaSZ~lhBZ#CMnZcS4drwI{RpIhQy%%f3gWV#lkaYj)-c{x~1_DS0dMjGepeR}Wxr8J zHFd2V9v)9&f-7E44V1|AbFWW$(gZ3Ub~21i&TlrhD?{gN2y7I+cAbB{h05hcW(9-P z^u8DzOeh8xP1I%orNEHy7gy zI%-hcYLkhZ_1qlB@Z^%-#4rARn&L_O-+QIXpC~-f1Xto~nFEo~v8y9aPAH)qx{*74 z?vEz;NIevN#RJfwH|T4Bmpv}+h|{F8d%($YJ8d9zdl=c9^5Tt5SFAI3!g*>uyQz0+ zmf)>lBS73-Ssovsi9KOf7WME7xg1^v&}@L52A7)&z)z*5G82 zN7Sj!0z+nr>nKZb1EA^U=Ep0S8~0tfT-0`DvSWlblw1+Zt+@&-hvUTRF!o|u=)&W) z2JY$W!TntpD7UW$Z8z+G(oWRggM&>Th=bLp)eP0$7VEme#4?^Th0%F|%dxjWub`3^ zIJ#AO+xYiL-!`erwP|Q2hMbVJF}^_v-c;hQEI-T2&OA4gvx*}}U?r6goaV}M7!;+N zn(M^sYx@hXjZ8Ss^>}$?`#it4E}lQ8V3!2QtJcU~8JpG6>Ov<20*5<|NM@O&kW8au zaetm|1Y^O}E|{}>aoGt$F?XR3lvJG~Q=)h$QE0)QMuScW*1&YGzjD^>%T>B8%syQQ`}q_mRG(VcXayd zedNkX@3Z?PC;@+MF<8i{+RP=}%?8;%)7*`H79fk|2z|C+Hrx}e_d&_;4R`(kJ zefrN0X~n9(5sW0j$MnO8v?G=1esx$;bngM@A+l6&-KK#$>8p$uV@u%iNG=6qA5&*; ziq{Kd$Thcf*EvT8O(nzzLn{moXA319M@Dv)1Rdj3RW6V;ibAGq8G^fwh z&gi_+yMkNRrZU6g%XCUR<&v<2brr>qz!Ew8T^E@fRXT3y=$l4)iKUvIQN50s-``Oy zahB%WV^BnDg?gyOW@Nf=UAZ5<(Nrfr8f)>qwEAO9CIRKMA)~<#)bf(D^OPJJ(Y!2AvhB)!wdJO@ORoie}Vs%`nBK1~@dmkBuakq4@oD3}@kUj>B z2W~0wrx=edtk)h)&47N;EEMn39}x;yjVZFr?Db9Yvp)QH_E#cVOfy=RW10zWv>!&XIAB!hPMsu^H z_~4dTwkZIm&J4`)dqtedc$g)!Qb-xY}ogy^}2D6#EkZS5rS zYli8(_A8()PB!=#C|RUQe34n1$KJeTcsR=Mb#u}npkic9BISC!^UZ6a`*Tw;1z9TF zuuURBPFDaWyjRG(;))`!XW`=KzN#>)H*%ga|Dd^+3DWc^n*r_L-#x$wL2#0r<-nY@ zL0T4hHP^HeDm8lkW?EVfO4>gy&5I>}^IhK9YGWu5|ISF&5_tDqAQW+$0D$i&sXCWmKGdiS9{J@jTMW&aKQ$APehk@G zHj*2AbcX3>onqhHF^>GxmZ$3C-pl~ww8N5B`XsKb-PDD>Y}F5aItjwSm8#K0XsUx+B7| z#vA&l4R0m-N#h!`5_w>fxLpm!V&`OIWu>f8IS6*okIM zTF>lP7op?k!0H*vY9qrBfBu=}p?d z?OZu+;l4#r-m=Yh@jDFBr2;xp4VPa2ZEqkI)~eZZQTEhCFoWxy+n}LoxvcT--}nCg zaAA={|JMg<*#FOpLx^~Tr?tjjq$UZs#DxAlYW5K-e2@s{u}I!pZFqa0QzE7}fqeJP z;J378p#`t!G0wGvgBl%RgN(6bBR|f;8c3z$fgwrr{|(BHYOnHP=W1jVra1r+{hfgA z@%!NTElbS8rk~aRAze_RFv_)=C`l}2MrL;GebdC*WIj>9G0F7ICAVT&;pvBptK|?p ztxUtK;z41coJEygw147wzr5~_5RpsaMk*n{m91^Pz-HQsGZ|zNJ?FAn@`Gj|@ssNp z6uNH%EnFDzcrE?pelIDfoIXXq@*;`0_|;V>@gs1el%$n%pI7MOG#_PLnX|gJHaRj= zs|RcklPSeZjf!q+=s#QLq)o-MiLp2bfq7m5hx=eV-U)&03w2#R=5t_!BH9PtV?Nn# zPU#gZ%AfzWe(}>^xwwkISi3$R35Dtu(b%?AHUHw4JI!UX1D=OhXN^=uRnzePBccz(mlMAl8uYPmY9HDp6N4Y^E{rS= z>z9$hfX4cN^^Usv+1?H!UcG1G(t&0_R=v0Vs)hqET=L3zKCi|c5ZnK`xC1PwReYds zX&GfW8&z04EKpFUP!>=;pn~8>)y{}?|Df^m3bR?HQrS3eDk*9Co zS_Z;NMGdy*+!x5eEhk)fhSI24bGEB7pJbN}LO>XLk-E+}pUrX~4LMug<07X-^;=9* zY&I^Qt<)sd5UCUjqsrdqtA6^^*MGeKZxy)yqou!nc^xFcee6#2gJxKqn{eU5(l+{Q z`daG1rstNmnYWocVQNS+g9~UxT>z=mTkS?uP`cji-7Y zfn~oruv{wnKC>t(gR$h=pPoX&eJAUN!qkohxfXIC#8)&Y9G5ZLNVG|C%aNX4I9=WP z{QtNCJ4%MY9X&#PENSvz6>Kr<_v6&2{eB9)iLKKMrGP9OT8T1t%0+$34_|oR_tx%dxA6PL3A#e2$%Ut%bn-cWa+Ard=1t0g35v1ZENOu0h^!tOT+wn!zBDnG|*4( zaOG~eG?)pMu>^iYEuy|9J$&Fyv>g6H(-_nlOU?hXrqAC2pdX}{=4rio@zZ~Whqj

    U`%a86H#l=^Oa1MhK^`A1R1XGK&tUP_A)8cKO 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Õ*r)zLYgF>WS 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/static_build_process_collect.jpg b/docs/source/_static/static_build_process_collect.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8b964ec761ed960b2a3de760d1c88dbfd236504f GIT binary patch literal 288119 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 z#&le1r});40imy%0A&hdxGi`VMa$t-E%ckKkJ#Ot)?1P!^CEgP}L2g z#;s0L&K;6t78XI14p?L+$~5ziO>Y0?CwzX7HvmyJUw(`G+d`X@~d4Wp_q&Me{8)=RD=U!B3E;>+L%l)kKnO+ScWm1dBO zjD>@F-B+C)h|T&$=ab zX4vY)u6HZiahc@nkBwHGLBsP?G?(xZGl5 zS5sDhSWj1Fnv7e8UuJnVPGNiz7RKZGpmn5~BWT?klxcv=z=qfQv7Czgf2{-O<>SZv z(q<2d-{CgCXwY$1p!1&a$=-Ri`7ni{*1vT!^@9a~m*1^;LfA26Vfzo4IsbK5^+W0~i6RYpWlSMDSa@Q!R8PaZG!c)YAL1i5=iN)~iQp%5GcUrhQ>9G6# zV_byCYKdqA02xG4vuR)tq4VUITxB2%dA zYF@5_hc-6&aG69LhB1kwgkAy6!>zJj(vEMBbULxDDSuL5lj=}!ej#c+dE9rfd7|s# zB0Z`f-&-XH<~rwNeQmi;X z|G6ldS=Ar~t9T9x1}`z$-9FAjdn-I4XBxdwYAmN6e*Kre`s?#_VSCu@IajG^u{Pd1 za%6N-;aKnn5dyTVNiO!W+*S`0&QgfjNK48K68gaM4~b*e3x_UME^rX|kE?boh`K&% zFjxgVww`-_;%i#hXPXA?Lfy3PU%t0r!ZtunDnu}Jy}|97ED!dzsC4_dD%jz^9HD=jLx%X04=aj5KjKUw3RUFG1tX~7-}9dzmJ zZ8jW!c`69SEnT$6Oq1u^XHz28HUnK%-o~1K6ligAjeKRDI%R!1*;AW+|LS_PBRlrk zTX-XL%-l1k11#>V=9a5KkyOM|&lP2Hfn{es-rusyDp@H_?5i9+&`c^??HF_NgBFC! zbE-`eO}mW(=MtQH1Rb1g8B$PUhN4ZVjk6Nzx?op%#rY4`vS6YO0^^e+Xhi11lXunL z&HOwX9Pa3@W8iLPFro9tJ@x`|;##1ERHmf=*cdL%BV(#pl$m_&Lw+0|e7w7OjK}!+ z6hC8O8Tn_65i~+jOXP3bGo=^}pw`_+XJwXPAQ^|%Y^wB*I!9Yc_M^o|OdR&>8r@{| z-Ku$JZuwbdg?(R~qIRYZu22F#JRPV=fO`gP5Cu*?Puz0M@~OG5j9s)@&e2;H<$E`o zG)R`57cjdE7oO4{y+orL0bK`T!Q$jpZmgKrSR86u!KGn@SwN2<7;&`9^V{QKlU{fx zIcG_6iK{!xHaEfTMF4^Z=F^>3BYlF^zlW2Pr<5B`i>jIWlRr93Dn8 zA~RKBo2~R>b`G#&p#`OzM11S?+fUco|F*o(jr{w{zoz^T77Jm~78apj{^~<^nvv8_ zlVCaQhPJ2`V=?=bs2D75`2^ z>D0~uMr?NTRw!4-a1YzqfK_GcRN?SSxd0{4!p7+dc2|RahjrQm!{z*B1SguuEjeh) zV~kF?@kGpqABj3PRt8F@)Ka6hKE}t7$4!Ww8OM|(d%^0`2vqJF+x!TuwBf!DeH?zt z_Ga*tr)>A(AOK+${UBWWw*q$I7VKcKk;m4^!$LOb#6gb&?c|kdL?!(C`mQV+@wrAP zoT6RhoukUAm_s{DmJ~-+ol7K8J@QI+J=Zp;p%$uK(Xh$6#5zXo5FkR)dC8+|Np#1D zvX$1ffbS$KK}K4QdKYx-?N{}X)R2-SL(LjBM!)MA{zT0VrjOyE{WRspKSd(cji zF;*HrjyOpdHO0(T+_+qtat(!B^^H;)3^Eijnfz6&s-M+i(& zSCFG6zOG3eVNI>g@PDFoqN>=uyPAF|Jt4QRY~q(>o$9@|;HxBCZYI=7Y|A=QT^^4v zA_rRx#f^jfISR@SU88uXZKuzyJ9wBHAN#4Q4%QBb*WP1J=L-ZKqXg4hrVs`}rd+9L zWs(yokI`DiYPMXp`uzepbYI@w+}*_9LW=z6TPVoVzCe&j~JQ4 zDu>V!i6pK31+$yPeZcUreDFl?*OZCglAyr6Te}m;wV?Qt2u~{y zZuX)XT0qoh266J76wFSPq7mx@=;<1`h>~^@o7CP?XExDFr3zJrJG^r(LtJ6 zE144z=9xJ3Hrc`kw=cpl52-@2I}De)6Y*}Wr}M=2rXSf+qYeE7ok6u znj)Peq&>1hI+|@m+w`FhnlUyF95{>wU4xucMXo1!z>i#gm{kP^(M8{MK52dKPK2FU zj}7K7TQB6X-Zze|$XKt5TMSatQ4ZuDF?qIX) zFsg0%!#&%0ksmBxQ`AUu{x6fOeyMEb5`A5S@?#gyHXTsP_Uegv%@RVMC=p=Zq)7RdPz@+zx11+ z8ng0XsWTNt_rB5yU@R%t1Ck2<@tLq1%dlTT2_^OTZs3mZ* zCg`c^nFKrp28jyYapI&)Eb54CrnBE zweId|1;nf3)~*N8ZkCN>u(JXlILwnb;z6om=AW?8o~jvO@1HQxc#x%u9pLak-Z&8W>T24Y-HWE{??>DACpVGs9BuSsZBf0?&uN04Fz zpKKkY&NNZmD##~}LdQ(y4(eI)5uu7@9V<%r{)J%#xqrK8{m!dfU2;y|PJNSF79Oeg z)8PA0Aa$Ah`puuW4DCxvX}$|+T->+B4YOKO%c~x(jkd;TeJ5rfb1FeMX#f{|e&V#{ zT}riEDl4J4u@in7vy$iiAo_aB7(0dl7Ej_TMJh6#7knV3M zvau5)WJ0IbEse8}3nrn;8!CZP^Grp?_HBi?r+$Hh{=Es9YS+J)IZq3RyoZDpu$(RV z>&5;*xgX|#Q`D#Y94`ig8HE?QIa{_Q+U^yc-5b0Q#YFPf* z@t7#8z;Dmtvz!w#X&4fXH6sD!oo40!`KvZcm6sE=w`@{>hQe|r+@=OLCqp+T}FM_U*?U~<^ZrIa>>^xF+KX zVPxa3s(q0RL9}$dt27;bzyI|ra3tEjeE`f;W}tiJsv0?%+m2hVIVT@-+wVB*#NdkK zaeup=U5Z(|U2r_^UUxlV${?Vs*W5%@PW#LVw%oE|L%$X(AP%>0-c=8^!Cs@d*VU|tK)b%X+a`%5sN!;jV2b&EQilUx3+NBmr8(uZs z3R(G-SV;`24qYE}{wdO^ClSOs8j_yr!3(ld8R)2j-danR*z@q=NwL0_x&g(=tCoB! zHI5G|^QnDcQC2Hmg<}en4I7gVqz^(eVuIFgn`f{^$8dJnx45+$2uLJN=<3Sp4Ofy4 z08Zs*=MX4V+_ET6{=~-{VU#cRcui4VBrusIJN3r{-M3$p_4f1%Vz6_O0GWx zZ>a8>xz`=kw)&!4^5-ev5|gvB8plUh0T6LEWlFh$D4yu*L;!-akyY0SH;NiR7iD}u zQlh#r-<<*G4jR!z1HVm+Jy8Uj@~pZBy>&nYA&N3XYH`cKaB_kTv$(NjgP96os_YC; zexnu&+mAWyX312h_@2A@rfJ05h0pt5U{voNN^txYf#l~yiQ-85<_Um{$KA@%^D^T8 zdN1X>p6j$k@)1d4^Qwzxv{2CDny!~f5E}j(4lbcd8@2U{yXH()PiAe@O+77i!X(yx zEiUzyy`eImsoyKAcq=!q=K$zLG4DeZQ8=fIZD+^YU>QZ$Hil~gV!`K8jBO9Q83G{G zSSE5asoM&Xnp0}lD~9gF1o+@PmDMBR>%0im2ES(=G*JCGoX|QpW)hB6{0Yjx;B&Qh zbpP&qlEZ;2j$Bp2(Xbb=JDE~YGg%^TSK|BX)vin!c=&g!ba7>)l&AQ$nE2KoESHvv z%UU9>Hr{baY(uffl2sX)U0PQw*f-HWq9k@AeY_P<8q-e(!rnZl0O0%w+5?`~Cz}o+ z_^>)Cal$N3td{ih_(`WuzyqPK&;3)S3pjU)V1nTh)?*s+$&b^!Zgn*~YcnpZLe%a9 z;#_+~+)&xvP}4~D$UOg~Otn~T`vY`!`|08&_jyJxDyx(8W;cIDA&f9R%%#ox`rWuR zCCbs<=ly}PX4|L+8o_yRlwWEqxYRHlTn^KG?ARquj3&Yq9-r-#n>>_)8hhaC_BG$0 z5_~?qF7CUbDHpEs*?z+QGHr)vv~KjG!Ewuyd#K8uHGWE(|IRtftdi+I^B> zUegDaRbWl8)p6XWg9fB)_QKu*2AX(p)RdxV8eCKGl^ok@pV|J0)UTNlFG_lG=`#Mx zu5b|$G}PdBm;{{+O^Y=~bgMT*jfUF$TIs3tt`H)W773U+Rxmxf8m{OTU#DoM-iku`YZ0rTC@Q5AetEcX8y6M7*<>ZN%C0C zQmy%+v&uKLOrRC(qK{c4vWURQ7Q1)qEllG<>(GhW;wm@pxsqozD&_ z<5^hP;sA5?wFWW4kFt;(1+jX-jkzeFtx(V~mm260;9JeHmVD8STL`X8}EMQ2wmZl~UbZ-ppP6AOHpAPyE z8$SZ;bhT1KH2zTEkE}uzsp$9gOw&vxd#KGEqX2LSl+5lzJy%;T+|PZ_J?5pi^n>Tl zoUa0ynrdVKyC{yS3wAWU08MlEfyI9WZ>XWGPEz?dM?rmTZu?_YEr{9ig(4#X%ObiR zN9JcBkWL5+P*r0Bl+EtXM@w#EgO)T4S`mvl%QR(1hi#YlZd(y zJ-mNqO$4V%l6@Z5aZ|1r5%xt+lo+r zKp#DYuj_ET0k=d%^1Eg9mJF!pHJ%>O8tMn)i`V2fYaOpI>-mfYG#WZsuu;_2H8O~F zbs47|6b@NX^B7VgW0QAtAYA0>Zd*R$Wug`$9mf_>Xt+h> zmAds&P72h5U1POiu!obHTAOT;cj)ll$)$+{{4|h*t#-4ba?GS7SrMbJJ&aEzz-k#| zfr2?(0${-fy5(;j6ZF!ox@MoF6eXUgyc0gkcPF>qh;cdXdPg3Sg~7i|>sMH(Y=J=y zfb#8Y^-2zAla)~S4-AuAWnsV5E93tKoj}$w2_a;D*F|nu+fyBf6#Cz*)#T?ObzW zu)GmFxNJVM5I8$hCjm`Mk}rQvi6K=S*!zV4@fmI+&qsJJz3S?a*-~XFm~9%MjINU3 zu(m$AqCIS({t8pDD>+m$olkO)o?Mow+{a*wP%XETfQ2~Zv_-Qm$zQFO02&4p0z|Rv zr6R*iEyN&gkHYGu&9m5nrrN4*Az8KlpnjUAm6}JTkdhi24fDzKjL*c|C-Ikcl3op| zrvGI!H4YQE(f*Pyi?s>-^V8?;o+5}|LMjKwy*5UrnumareH%p!$1ww+a-d#-XwgcM z+x><+nMWp?Rg9sGdeQKOni-eCe4m~DKwUB6B_mGswt59qIzk$|(a1#H5!`eMDmYh= zCd=4lZjX#`eidpfjdp!Czd;rbb|Yl)z+|5CH(O_6rSo}$T@QeCOsL#}Y7Zwx1=(#dqzn_Rn+CwNbm}%N%(JgXc8as*IG!WYu z3MTF`&Ol4AII@`w&oz9_?!*EoU+%xF+1V7x>m5M!w~iV7*D#7-z+fv2D-#C?3odPK zO(EH;zR#{=u2!MygHDEVaX4J_GppBACV`QP%FebtjGwuEATiPS%LM~=QUz}wm!QfM zPjF)S!Ay?8E8AByw!7KJLKp} z5oX)<0e9N&)a88s?sAmCvvPP!PZ9-3G0ehM=%~|M`s==B*GbNO%7WqQ2lK*DR433d zO8vW2vdk#p6dnLfIUHE-k#$c^_o#eDb0BkEMGqz8T^CUvrsLBaX&%k4AHfHL1)jw@ zkdI{bIR}p%z@0=&x-fQ}_KtYFWK|9j7?u{kobU&dLE1~wsTFP-b+cRFg~MY@G+WGqQ+V+#J;qO@F{6u zdC~WrP|Q_4(Z=Sk>aaP7SBlew;9=zpJvg+BFq-DA94J9*-X~}>oUy(p(f`|ideb>dI(A~ERQ;Tu?VA&74Xn3gD z+bO~^ekcakR1Kwb3}OK0&x4>YU3^@5<5pKE6;uwt5YYA!l6|P9Hd$rn42yT`*jFcQS7e_x;Ml{7x}+)|s}j;165 z^zkP5Bt+Dbu!bFK3H_!!Jrm_rA+iGBL*|z*m7S zJN^I|2nH8lvEwHuSo0}|xACz*+L4IitJYzwyV1c_6AjeXVmF*2aEJDjs0Lk&z=<$h z9Fw0pFvOln&Xg2$qKD}6GibIJyi{;Y5WH$5#8nzEloFIIJ5njQS?Rm8`5C+pc8Yv6 zw6aoT?>W5WL?y!ulJX<*jkMn=F{{D&iLey4#j1yI7bo6Ef4ZrmRnDt$gdkRmi*TV?nURLCZygz$n6XZrU8)Sr^|#O~)FavFViq2PMFr zFp*G>@h=ntJTpry6v&J~AgXYpwN+)$XhyHOAYK64pmG>0=_!}bKhV2 zU^)*?xCPpdq=amowrbzr?bc`T^1o~}V#h5vS8Ik~nZ&ukh3tdn+Lw9+)XLFZT?TTR zIhTLL^mBIkbe=WVa;@pnvYf?a-i;SG*ErVizHe;Uij~wv$nSz(@M??txosN{*v+bj z15T_b{Rh)?8D2K~^85|p?Pdo-j^-CI_0TyzTZT04-9}=x>Xby8YdqQ`E8CT-dJQ5t zS;X&PJ3*2+S{-E;B421&C5%{}1i*cnLVx*%&Y>J^`r>W;N{h=(f$ew#$9N3&;0D zF&_@gTrdz5EoRIGG_!}*-;$98Pt}TrK4-J-stD**6j@Z(aS+>l$HM++%b8newejeq ztuMiGJ{fsdK=bD^D-uN{kb~u$wA*e~X%4S4G z`mDAf!jE;=J_%nip|iT_e16t~LHhj*z2`$xN@8AuHNaD z`uda;f5ZI%Qf4tfPV|!y7twIr?2bn?;|B}K>P(2h=Y8eCf=e&Wm zaTi_~GY{FQT*2IR7dHG@b|Z?kI*97`E$A}cGp7iE>?u|zGOmH5QHW207B84|`Y)Ke zaik>a(&C+vl4I??A1ti0>S@UBjjqI(4Kp51Q_`a41z@uiTz~-;@O@ey?EF({X``}C z+7)_r+uAd?7HfBjmTEG$x{Up%)V^O%PZ_+<&%S0=#ICNtPhPG;)HOny1cXRRW=xcs zt#0zin-Fu<-Jbto;c&O9Q+obtoQh?vS{}yvKD54P=t!;QCFN5}DvX4aD+%xs5M>1o zbOtI}$pvksslutZdm=%YTnf^*uW@op+hxqkTJ>D(bKWL|D|?gq7GGNyZZj)0`4>iO z{>fclZEt0%t8>Q;{jLgonQw$JT&ZK}5H6IJ!nd@vx&q9n zsgeUGm^{%gkHU*(iCoZh`(%5ozCr9Lf}jGNxI)C@Yrs(ZQNvcN_T5%3K~rgWVav~NLj)PHh-AM%ShKzir$`{nzT+uFGWg)d+tnNF=5>Ilpxn#>rW0O?C0eA_x z>O;9i9Fw4FAl}&soE2zR-MU8ol`iT+7W}9wXJ!gZyY5SsjWlvr0TWHlz4r71nJh$I zGBcQ9(OQyPWtp{J=v920pT3fb^e$ZHZKp}V@58?NZ|C`INg58(uDI7Fi39LkpAv^2 zhF5cV)P`~7_GFdbUed{r(5OB+XC&|8Ql=dkD;@ek&b_WkpipuJSIU+oo&ySNn zx$dIPvC(1re&R)+Cp7PoKs54ZS=y!Hq3;3})_PkOVNvAH_cJ^Art3wJdHgGIKydL3 zrbqC^u@L?m`A!?GnOuJ}n4>oTRkqKzpy9*FH@lkV53&^)LRvVxm>w`dM_>Hq=Gd%v zcJ|@;3`-ws356|T@ZSc8m+#MynqBAw0HD!>nCG&Gz@TQgTv)*gTOPB%LSDZ%*>~MI zc3X5afhKujAo_Q=Kmp3gT$$Gi`t&Wgim^O?zg|1_CL5kr;btF_=Cm4&cC?@BD-mG=ZxHZ5=0b1@~aY+lA}Nn z-s?HSrw3oiCCHmqTegFB9ZQzmxs27kGqZ5pcyQ!`9^E2JV1pTGE0nB@M7MmHQbR&gu4?yC0?!xHEUyQqHM&B@%;-7Qgl=`@fPdW{|AWs~n{XkA z`Ov}UJomdSw}|@xold!`0AwwV!0+K&7rgsc5+kl_n^2r{z&}{T%pgn7mGiPA(v$$g z{WZ8*!|&9_FrSez7sh0aQ~|TtFf7a66H4IOFtU%@53QwYY@aYo^`~8&_{aluHmN?48{hq9^kXo zpawL*f446qE(eCbzZ*R2I-u>$F#i?c{bXfZ=dOF|ubt}25U|-4I8c@j1+rb$v$L&$ z;TH^)kxc?J><~1V3)!+m5jI_de#+nMek6b>X>w`00jmN%C@h-sE)146bz31f^ppVu z8v+9q!D`?MA7h!|mdS1d#OvZh*EA$KRSIz>{Ys$NwLNv6zfv^g1%rsikXBM(@af>6Su-lp~U;_Z@u<-U7my=EF z`=)`<%SNZM@6(77N4tx#{UX_ZVc0j6`M#Ioe!J-+(LF>_v&c)vQ zhs~ejGfj4<8AAnMgmUS??u9D$&_qQ|K>QU^aq%4`Q}7V*RPupAfK7QOurWSYz}(Oy zSH9fH4gkF5%P}jE77U-#lad60` z(p+EI0sUMH0<$<=UDO%NG8WCC+qz$XcMY>OO9$u zfoDW>PLgIVPvy_`<}*bPN$lL0{zFL)77PoEn6LXPO;cgw{o`8YVkTN~itFByodKYz z%0@rATQJG6Tgvu8k!+o5qut~a(>KF4Tg^rmyfJbXFUT7FF07m7{y=s6jztS0Otc&m zk+tC{3wdvdN>&#`k1A)h24S~>}xLJ5b2j_fCv-+7{2;@EsN`N@CL^l zc?N(9nxWPZn-c||+cRsugk$o+g${uZ=mawp|ECKsssm(2W#x)PuUATNv+&^}UorYy zNgF30%0!-nQ(9MJ@XTXr5eZF+$9Pf6jXjkMV*&Z05xB#q6h*%3_=3JYcU=4V!X`Oj zXfDrhL~z5qSHu32{i6EE#elvn9M-=#th76RU$K zF<4K{z2JK~U)L`r(fGt`u{5*N4QVHqJyGPu>0%sD${<@cJB`}G@~;8d-Ntf-C?Q$v zb?ZifuU{KqIMH?-K!+R18t*gfiHrp169uZB65yGrIMQL=N5x`x71~gd7*kBdB}Rp& zBi+MTH}dTpPr(emE`4lemeP_N2LAe4VWDf#pLU(PDr!m{Z3!P{%TiAk zm3%LCrApV2=1KN+1cWeI?@oR;|0c>kPKeMLxV|uFaEGg<5M$#n0~Kn^nQne=4Mcoz zPumqxGv{KGOr4h9)OLm}l?l0LJ&lhMmcE|m`&AQRh(`!#%qff9d22|r6t3sa)ou^` zq8_goUwdusvG=EGwcE+*^t6X13GB`+m*f5#QGWh=HKuLB-+9$^z>UDSEb6BugI-fj zKm}O?inX{&Qga>8X7+HY#_cpBiQ|}fL-vxvzUG;^lZSTH@KlP?72zrW2W?}seysPE zg9?t5H-*1Dv_^LVV;{zcnr8(Ep98X3Wy=PvFM2Zc@wPMGGM|5BILbqA*S$q zrpNDNiL)upsJD;h%5z}LlPcRH{F~xjLr7SjI4Cf^r5|jSwlDI4b;%Z+tEQ{so0tH~ zrb(`pZea5=BVZARS!d<69(2qa_l%=qF?zZyEF!E^E8=+Hs8=eRr7jQZ+>v-Ot8oM0 zMv({1YxCz$_!eYPI8%?k+#eQ2`2z@{i`JmAg-3th84Jr9*O7R^u?c7zPah0JfC;t{ z>r_4hw{pxa7eaL$Q+3E`(fxPhk1fBCgzt{oOW|B;oDpaOgY(t<8>$9w)RMAVnMJ#5V-x4zTDia^o_JgI}kF>>% zT3`Hi2dvzy@H(dr3U@rYF|{SON=?_o1kC0h>qSwuX~rC?o8&_nEnJ$f-2oKM1sH=ax7zqAFnFFMdQ*@RpzRh(zgIMApa9RF zxy&Pd1hxSE;axf5!(HzaA_L@VoH89G@M{={=$`TUZsH0Pvrw-P*Udgd13N6h*;3O! ze+p}C+z;$&VzY1%qZ&y>$7Zc#oM_s&R3j>?N{Zf9j{Dep(9R}bn(&fSWw_bAH_$ch z`4!0(Y7OU&qway73ndH00k?^r zxM*U*eX{Rojo9=AY(dg$Jl=ibGSyEMvuQQqhbJu%! z$D1@2VN`uQlHij#Htw5(2_SlkrCyK{v&wS`?#rF&X(F*{y{LLh(;V_6J3z?3g_(vO zU#)+zbm=_(Z_J;n|M%ukEWGk?k0?HWM6qqj2w~2t!Z<8@BYg}pZ5~mqos3k~+c>at zvT4_outP1%l=~)<@K~y z!&ybaYd~_yxB?;zHOvy_xh(>|L2ABf=?K~ z4J14mjoLk}HY!z0l)kOF?tJrE8{pqQo_Krp(|4=SkE?qAC*K~TpZ~45fW*wJJj>|z z+5XV2`jWRpJBZOuUL8;Y!UC%~%7iP1;r5xMH6l)~4* zZ#N!#Yq1>z>!L<#YObW`P33p5BO~Ya_#f@}D{;(dBpgAwzx)C_O_S|04`bY(b97kZ zO^BThow0v(iud2V!aok`+ud2qStc%(L_5o1 z(q9M$`WzNLJ=3 zswSPx^zF6EBEoiKQFHffa~=@I(G1~|nHDu4l2}Rz5NO7P$#yh-Xb(sbuLKY|@5K50 zig{hDYb}fAN=(x64#z5l;m~kM?%Gs8!lV%~bxyiHy(mL^``c1#LzY-}Vr#35!ftx= z9%M4$+7Q01fH-R8;0(S5(7MqnUaigBB~?XmGK?kJZMr^fGlQ@f_@XPdR%lTX`(31v zV5JI~HWz<(G|g^8Q_5|X_APCkKY<&jc46|?>NZ^^4LOQz_E_VT3-GPlEF~pp9!Tj3 z(^ELdQo@%r0HM~6szwu8yYWpj^N=#25S2)}w^Nx>5=v&Oz(mI>ktz?LDb>GrrBTzt=o;6PV$ z0l_60{oARX&;Ky6|DRv}=f@W*0oN^X7U}r56`5&xYb25xlmlR<~DCQ zUJ^&Dj!#G{oXRMfEkQ?nwA)10^j-u!lBM_rmah5B4kneC1>Ao8^>QGXCrQ5lry|B| z19;ZcK&4xwAr3=-t_T=>rQh72{tIgHp&{3|5hEnP7hV_sW~x`HXqdlFMGvUwQlQ9` zhMPHSy~JFkzEUPx-FgXM(RrImJWLz0MIVaMw&}c%Otj6j;~2<;U&s1|U*dlfD*LphPnhfE=MICs8KwshCgL+NJiU6z~yv)7Q~r zvt;=}?I4{$OEX&zL~_ceG*}JOs!;RMI*p1r@}w$-d7;QOLn+5J8s^Tjgo~|C+1Q+{ z{@^ZL|C+0}n^9(x>=hgqVyEWjLvcPShk^(?$CkN$d!pBxDx zQ*vj4)SU-KZ?J_f{n{YYa@6(o975!D30m&}Y@{ae`K5c6Bkn?2 zSBOL6lRiL1EQ=}=3f`LHuMPLvj4TQo21mZx^|%Io!W*NpdUL=AP*c~`*v~8Uu2g2Y z7W^{>PFx_ABEH2})ixb*eDM^@P$Xn!`#4ama*U5Avs7b0&{H6zqIgT~VO3Cy)x^4D zX1UdlV?xDnW41PfXmQ&dw{=ED^7l0(v4GC<_^e#C6L%x64b^f6{Qq$G-a$>Kf4_fR zUENjGMGPp#LY2^@gbp^ER567bP^yF`EumvsT4)PMZ!4XI1StWMP?Qd#C=fyjMUa4$ z(3>Lq%RYPNcb=X3KIfU=neY7O%*h`aCIck7ulv64>-v1&@7J3H0b(-DRx?A2b550I zuU0eZ#B{t|YGcoG_4YX%sg3@&GAjQE&W{z~fSsnKH`E-4(#~ zABR2`Y_xnZl62J2r&`~W3T>%MQ2ha5h887^p@;mB_}9K&Xf&YO*?Ub%hbLFGpzm50 z|K~fZ@Z$)SW_U_e?d=o)al1bC-^#JY;yafv_6Y!Y$E9vmqWdR05fKmjxa5zQMtUXTZ_rh~x^;{g2qlx>Iz#&FCi>>0+fD@-B_CkS~w+4wfd#;g2Li3hQ8ADfJs zpY=$v;A{&{Z|gpfo2I0AjTHp$OjR9HVLsw@pFi6!s#}QF_YEW;5_)pw+oxBt6ki=g zs+U3OkZa5VE@t;DhjsKj`N3G9&Tce9S4g|Ncc~*yd$L z5x#9Ar>(K%J$uY%t-hydC3}>?Ey|(L!qAH|wP7TZ{vDk)(v{Zd?mvlD(7fstTwFCC z@LOW`U6Nd6W=*>b!5vqIaTvo!7O$(cos}qupyR`i*WaLC12I zQb(C-S2OqIGVea-|JSb@6zp*BRgzzCGo1dNN}S~2hhg{k&qv72w9FN@-|D28H9q>H zoU(3cR-rw+&Z6v3LM>enIO#ZCSH*_|u2!3c9;HYJP_7-@y!Q9yf3kUieS3aQ$EK)p zAzh<^fzSx7SOOxz&Ud}*H%Gb>(*|ZzNCItf6XnJ{D-_Lb7rdK)YbkbO`J9Bd#u_Mi zWZ2|XiTlK8sK-o#AVqW#rpK;dZc^(cm#U4_s1Ejscx*d*5PrKW<+606YZ8pEWWUP< z@sY%~fi*LN!+O{mL+l$3e_hr$sRjf+fbrT_!aB7IVU7=ZDVEw2;#gNGPq0HKFh1va zGkR|cUot_t&G>4$u1;NY-}NdCyCv25+Y6`CM)q)VeY2~{gGI3Q4z7-99ZU60o^)$% z=!JY8{a$-{C(Ai54`w%cEc?}i!d@wn*jKc3Nl5{EA{TPpxbaXOy=IN?-BqH8Kx^DA z=}Pr(bl;o(3Z{}7{WImc;3Gncw1j?e**kI!Rr-D!y&Lx^OxNjL_ViM6Pa-tpjFY>v zzqkHVQaN3Aox#6Iha0g|d92;M$GtZ11=Pc9@um3JLo5Y75V4nCm<7{?db`Ea z9kT&9!~Pxxz2^VC8vLcTM2;=-Ji?%UC>x&se4FRcKkz77F4W-VgDWJLyCL1?91X_Y z%s)5a?c5v8wL|IyfC%Sbg6&X9w3z>)w{>oBm;Wen&{dE(+q-rW#Pjaman4d^Yo=|; zxySUwiUuTTjl^S2Onp;jtKbVE&&YIa+ z)hxsJAT6{ax5t{p@O3rm_ zWysLfqPlkK=9=vSUX;sBDd>gX2vn<_t~TWI-DT=qGDTU%3!5u#hb#!omzX7J7g+MX z5#<67L()08=jrEOxoj^|TN12^i{SFazz}egBu($ohKA{ zu0XO>2eZ>j{hwZpnCyi_-VIc}=B=dr-R8h*mGtW__$5|z)oIJk&loIS>$Ce{W-}gN z=9tF+UF-GzOPx@tj;=?IFvw$mJ((wfSBjuE;U?(nbjFg~Pa&hY{Zg}RV6^$T;x8fx z)6{^{iQeHW5?%>@=>-7{H3`Pm8n7A`_v$NJV#Q)(l@w~&0;T?0s6yvVfG#g&Q;o^{ z^#QF9cB_H*0xCZMrgg&TrIy}-nx|zh%LS{5Kfb7M52vQBdh8o(WT@fpALkjk@+i5E zb{+{H^kcMUHAIMd4J0tJWoP)Zix_j^{GXO~ITP!>cT-}Q9~^cBnrXa&OZSD|Ueu$H z*gp{s<(fn8a|D1+?&fU2zycn~FcvGp_p`GniRrCmK8fc$ja-dk7k69bXLj#Uyf3)Mr4TFfAeE3Wj5LC#&%h zftok;8TjX+ALn{KU-gRMcexBP63u8>LXZ?JES&_@%B#2kbt#tvtg`XTn98eTmr)3s z>J*J!*Be{koz3GK1SFjHcg>RaLx2sF1m5h%6?Q=FFtmeGV`*3E8(}TToR;cnOcwF{ zdT3)e9`Vv?TWtWzuK%2ua~OsVxV=_7K*q(T8v7MhnY4J>$y!|87Irlix>M)N2auKQ zD6k;h6v3xQi_io|q1i>mct+^2OBq|jfhOJ_^<&erN@Fy-ptfTv}i2#vb+7 z&yPV|JkgRKygO6ZO(l!%7|!;_yWen(Rbk=4bB<}G)}?XN7n45#qoi80`Xc*k+xm6t z5rGpFZW~hfbqE^9ntpcvTJZnIu>7}RN`tQLl`=-FzUZE{%7j_>+RW<^^l z3~dC`zF`G8uJrLZzN0by-OEbgLD|Kr3Op*u_FP3}Wks-psw2|RmlMzvN3?J>pXa#XAq`tz#ah0d6Or_=;j0x!!F}jya(~>lRE2BJ!`DMf|tCr zWFZHXskNliAz#qiyuT+@j|A^2D=RB1!=$AA^6|w!DNF1;|G(2{SXxg{LNd<%eL8??V>{ z7h+m_z0ZUdE8qTEH-P3FL>sIjm13SGdde3Aj`Q9IoVCa$JN5SOmW5Pz@g_9rx}LDe z{@F12pxz{PwH(9A7;tpbC#uZnWFwhb!SU~DgQsoV@l7sWCTeyC&`+@=Qy!J`W8n3W zdcCsXQTG{Il_P?Gzr;6mS#oJbl2wd*q4qH^G10P^11NVW?V}5CK{<27#Vp6mhyoP8 zZlj>#gr?r-pK{wrnu_aU+FV1e@bZgl_T zJz?k_F1CA7&7HPbL7&>{lp=EhYWT@QFkd(rJ%KG85E2`hGVeYdV<2f3D+}hIG%wL| zu5aUDFwgFwQgcT2N(hR9?NU{Wo6mvQa z``HuHR83Fc?Ujs?G3P;*QopjI=En@)vaL<))o_O}lSBT!lk-O1!KL^{Cb$rl*JV0+Pg17~aZWCD zUT+8{c326k-niF2dq1{~7M17dsrb3+*{RV-0KmUBwzPwRhIL&q5iD3q);opL)QM3~^3T#x0hkdMPDY%T>u1ky;8> z4xTj}hK#mtE39Xst1pl<&s+llo(S%K5Z80X8*Ku^Qfw9DQgrgA??3W=I2Q1kgJ6d0 ze9Q_=Zr)~&dE|iEY?Td#LNb0xJ!@D;^7nxA`TXjg@Z6FyL41d*!rbCLr+!0M6Laxz zQ|)lV)D}pX2n1G$pkUK3tMd(PzBs+>#NiofK5LD%db0SCk(IuN%ZtF=98SI^2JZ(` z;~14B+dIegxjs!Q`n((OqMD#;rv3~7I|~^FW=Zk=09=GZbvaQ4L~|ez$Zgq#ZmIZ9A%a-}?S=uCeh5Kde0o z?ft0b?TOofW7;eGqtCOh%$9zcKj~d+2JwQ1JC3(J{`GhFfBm{}#7OtIvZdqB|Cv_* zPn-?qe*}U5QDpZw=vxm^iK<0A9BC?92HHqh?9%;=}0H^z|7Z^T!2qQ)QDk zLv!wrhIeXh?-^8&tv)-|@eIIuV775q<3l&AJ?-v&9vh|ZU3bho%j9deu3x#w4Xg4u z^_99(Uf$}AU{13Ioc&Ux6L6ZJyGfmyTc2mHxjPq?`(0Y~i7B+(dXdnR>puWxhVQO^ zn)Q`R>*ZZ)ipg=5@I{}PNBvsz?vn6JY+2lD8d$-jc5JXbW~sziB9z74;xwT+Dx7F4 zy`pV|M;;F$Yi}PIv_Hmn44rnY+Mrpv73Q9Grl?$T1x`~GtLwfgj84kckb_Z1tNLeX zfysO+(wMalsNUX1Tc2(&Pt1*pF8T5?;$M92YHrP6!k?R?cBvzSB=ss8tHOT2CkcRK z6>k8?M&|m3B7LS(JXGR0*e$yr<%?o60UFLpaU8gUFPdQTMNJvXNg6J0M~`^9yVdWD zJAG#IjMk)R*JGESR{?9G4=f55UFyY!3pv0Q3Co>i?FG9~DVv{k<4yWC4{K|qA-dnd zl+E?7X)TX?M&!5DBLnN<_uVB)S8V>YuzNaXWY_!H5Ak-tji9q4GRNl7{>UO9RCEys zy6Sl&k?s6Y$Rga7PL1BSIo&V-|2hHIQ(s6XqRLXkckS>~34Ros?(z(U59JjmvV1rC z;bjLZ%^75~=^V?hpL0i6Th{I3O?|<*f$HAc+)+DEs2>n!iLD={>wZ-?3YTv`Ft@9< zyVBwu&eKVGd#dZNZPE$%;f%f1x2?rCt^-m=xBsg~a}4;{O1hIoQ^3^?g3Q*n(NhGg zKk_$6Bib4p`sJ^lZCP(30)D#r-@A>Bk^-!~A^O zL6T+XxnVw>vrZK?^wG^D@_oL!GuNBBeol%;SdtSuTS^|d%lmrzi5>F5A=!3J_9)3t z^48eK#mtkKHIAm05bz&qG+ote)*l5w)U=*=;k{6A&t7M)g5QW7phE1YDI+Q^2^b2< zyDcY~ATlBz`gtv=md_xwWf!y2?^|P3Z$J6T6PognI24kS^*M)x4ypI>@R&SO!eZml zF9Rqv8%B$&>1^rFEY`MZG%uwlR7J?S;5Vz>WV<)Jz5IQBmqP?8!uy+>o8YT8vP-qu zo$Dq&2K;YEc*Ps$z%+O^w&k@8{7S+u8l);vr?QMv3F6ul{!`|) zzxsgx{W$9;1(@V~&Fk0~%=(~v{LlK~z6qN(2WVkUc8W^j`a*yo+JP{n6D-_A0d>P*y#-jB(zM8iq zK|-%Jv-(aqZaRPeb#qTOBqg{~KL%2jOcNrcT(Tp07_}<-;^xi13%`2$kCE>5yDH_o zuX2;6$I~Awc`vLU+Eq;kagy?42<{oUG)#&fr8 z6ud52en_xGTq63a1AVbyGM=mWuIPxL~Zrd)J=`2tmJnqkd3pMGECN1Kw1sR{S3 z-Amf=gt{5&ngErMpJ@r0`h+743kllP@4$@u20~m#ESgoguOL5}sAdm@hFAL2r0YX_ z+kMD2OZVb3W864kXT$I)I@Qb7~JyFW-{#Bt=I}j)Uw*ODW98 zg92}YySY=OMced~1r4V;$83r)mZ(7T%J;tSjUJAmL=6MDJDgu#Ax(#bBPUwiJvr^+ zf9(H7cs3zF0GGa=b^EVkmR!dF%UVFq5am7e7nrPtU z|B%B=0$MMSl;K!ZVcB!D-o}8l8SI+r%W-(6L{H!VVqx$E%p*W!jbQ)yYU`o(x--{# zxtpGLYMmF;pEyQjedv{O!v6piKIdye9Hp(Ac|O?Z68DVmeB^kQ@M@`Y&#mPaW!f#` z7^+K(;Xj7=Pn<$4FXX;CQ!yK^)mW`s=Kk?dhcYFvLv6DahIKxjug3e{>^)8nMp4wv z9n&7kiXsnly$(htQoJW7Z0PbpE&sML!ZQ2ozWy)EN$WNrZmJqSRhFzZgMVkN0Dks; z^#A?f{+ssfQM*|YWaJsmr}YVMO8N|>cjCQ7y3>9WKZ2f}4gF1{jmEHCKP`oIqpv~h zXxIV@a8XfFv68HspnUs(9K7SW z&Py)6@f$4aX$Qk!R%9}eZjzuslU4M)b{G-DWk@+BNVrT%Nj%m^_mh~Pt-sj(wAGXopoAPG^%HyItB5Tu1el31R%^~%$G8@y#VX@adVg}Ec+hF>dK z2JHrR|^t`u724v$pObnvm^HQn!e2~JD&%GaR?H`v^4HJX2<`97dZNT zE^$8xmIW&l7==r^cyg|5!+v?Br#h&=23ka>Ie>xYy=R;m5NCZUWhm?(`{MR8=JA%R z0qylol}ut1HvWEo1NoNnBd&%}l;HIfxX!b>PG0wgAk$dlA&6`j{%b{Q0o=l+xreK& zsJH*mcGZ*lX>Uf~zppXE6c(i$F7YJ3?weFt7d|6#gU#a^)Akw93{8Me9BYK8tEqM zD~>QiAg*#zdiPf^%Ab53oIbB&kjh`HTySpDGw%aVt@DJ1YBCVpR3Dm{0@PV-*~P7v z?q`KSJFP8Dmy7Jz<8rXEoC1WF4dB?zkN-Xi4l)epQWqpw_RTfP3U(1VI<`2>RAu=i zml@wXPn|y%icJc><+4hVw?Gw2rGnhDmobi&Ms&j~Ye#mY zKee~*;h0UPI$14!Qm-AbUMU26uf`J*iATLh;MqXX6PvRu7a+<<{vj32i`eDgKVc+R za}BFI7F1lZSdd0-_{Bn#am*ZY0Yc78{;~-;CiwS|ob@XgOl?8az;QZcmEg? zuB0g$+Y!{#Y$?r_3uFm36_XS`(7G@%_S`b)MjabJNgUM`^(?Di5C~m%z-Dt|hV^3) z^#y%#UvNUSV$)TfiL{_q!o-})oG=F~pn+w68smUY{x1+MJz+bzt|%R)5;Ld{WLxvF zjAdoPl0;zE7Ttgj(s)jAZ?qnTSqN|WRx87Nh1W0q%83<(swNfx;#$<}LA(={652h)!(qP<|jBm#bG$&*=1{Ivk>{55RaTO}lpAs08Sy zq2KiDD{rk$<*2#G)GU8qs1abDSz=0MCK|YypjC19?;I-|WSDUi=nYBonevlvjEL;Ne|>6TWtk_bdEI(J4}+U-37i_oJS^7z z-3j&jtKQ~G@iYNh!5*B$M8&0r;>xf=JJm^CJH>K7nP%g~@|96k)`6l=ss=kCvzMn# zXS&O0f*~Wjsisz1Pu^XGZfb8TYBE9z%a*;^l`B}5J`UDX!LKIbH3*$`kX^=NDKW=k z0VV+^Fz-JAm;N5VV?Qs%U(CKnW4~0XRC-|JOHrOo4>dpG`LV2l?&H1iN@v|NhTt(3 zM|oJm&Er3@0~W{mMsaQQ2tIz6l3*DIKyFV99yaMa9DDEr=?8UM-t{e`H^o5i$YZ&ceV zijSm+_f=PWvgc&5CX3uHvqqC5UhUrSL-dJHL3DPHf!*6R@AFtTus0TM<(H-yH#fqIQzHJAo<@!*he7WA0{E=7s1#g(3e zrpjsq?iyVrQR_i33pL)8zPdUFdykhA{ps*!)ORi2pG(hb&9aqQCJo1|8T#h_@GphC zeo;Rs&`%SmU@K%?8eaD!l4Hk&a6HKMZ^5wtSJVIZjQLxs67k`a0!x%_Z?y=XfyldX zWZ0opi9RdVveHQrXI3Z7MOfynw=qD;6cv|}F}EXYryVQSAF8!K>3VuP(?-1rwO~Zs z!sK<`P)%6|$^s426p$K>-~TB`u*C4m!S4XS%f_`aOaU0I~M7{C-mmh#5%`i{(hu?yn zufF3TWXsb3xLRSqy2b7NpZ_rM>x6&F!B*d`7aSd(nas6Y4_g`Y!ZY|XL;ED@q63j1 zfSt|Vx+SAc)~kpU5#RHzZ-Np;pLtKUuYz8l!NL!%!U8;Q88P# zIMmGf|Lr^fFF(w&uW8?ht^->EJEhFYzVwB$hm#+KYDVhw26T0G7qE54^Z6qUGu|f` zdl_-V<{6xE-KQs8s@#-R-P<<7kgn%xtaW-@kqgTliZvUis2^qi2#X)w@gCN3dl_u7 zl^;?UXrs1)lI){yHCMOf@7@#n=s;j2rsFv*{$$RMVGb!F1~dHuc!8_2mu^g_nS{4z zUvVLg%i!uIuA9w)#dw-G-+@byBMFTvB~k=Wopz35|m7c`k266eOk0XhyF>* zTojg?yAtbWDL$ zfVx)TeS%H|s_2@2L2o)Y{XMh(chA56=PV2Ve{OlV<;FL8-7Zas`5&r$X3ez9 zyK*Ni(#>ka6A_2oKvgpgVaZv)^UO7XOKvtY#?dk94$B zZGbY=OM7A}$eU6@fsi*nld}E5R7;67%G#%xl}hF&OQeBOqBCl6A*b1v5~#vVXYw;k zoSk#bRK4f|*Z)G7D7Rwb%6!BP$4KPvORRRY+?^Io8kQY^7CgT9$r{1J%$&ahH4SOi{J; z{(UjSQu7k^P35%8b=dM?L(U;kV0A5R%yWm>$-jghW`_y!z;m)Q&LWE})M!FfJ||iI z$9=hC_pHREN_9du^JDPt=DEiDT9Y=U$zP^r(mdo913Olh|sUL;l; zyw)V+E5d!X4O339b=|;YebIR zHv@uArk8W@eWZ9ZC3RkqmH@vNkXu#RWbYG9S8u`EYc${8-p}{2tm&w|?xJc9&2$-y zB=bJi*Wi!$CH5r3t9V53^Y5)gg{q%@W3T}Uj-l@Lmp;T7l46Ga^F~TL`NFy{ z>2pn2X8ImQloXQY)SO<>jHK#Q@T)o&MLg{_YLxF#jrKvUJMd*V&eHP2jE(v4A6xa7 zB;IY@T@ungtHDac2izs8rt6C$_Lybj>}uEf->qL@Fw0qokjPT3mBZKUdeLC82xH3C zsv~wNT&T6uzO6IIpFWsST~%f7%A?{1)92`CnfO{0ba}4a;*fClf}n>_i#6`7d817AA^x`Q3-lju-g%pVF!|^vLLAjyXYQG4Zz#?>X4tY?p&| zB&AhasC|>2bq{Pz3$#dyutr;X#*6j~9*f>=8Z(U3%%FyX2mdTb%$Qao<$faccEq-d zF;q-4oMs$P(@b3)JPJ6r|4hq!{jsQe^@KMvP=r&2GY%u+H8m2xyT&YVqfv9l$y&nV z0cDvP+=SmeS8}CBgGwIje>FLhU15;Ka}*JonF+P<>=lN9(qRz|or7|4^>;5VK(SAN zGx%SOp^Dx#Yq^*|?w4~ZBP#aOZKgWQ<0}a}eLa?IqVDFHfssfiXpMvZ<9X>gHdcf` zNMt8lMuR*pj7L5FWcEr&)`4<-r%CI1%`SsT`3riaL`N7FiybwgqnGFbnX!MJx19R} zlkLVMuWq_D61;svEtAB;H>FV`C%l8JRR=w7|&g0nBEIP^(Eh+sMWDJhUi z_P`BrBP)Y)FF^n-F*_gI;?VR!nd(WmaZEx=8QwiOGpAM5Z*os%VkW#pX|j#3uVNyR zM=_xUDu0MAY(bH`a&}#>#XgmFcVAJLEpG@G2MHJDa!Mmm z_$IDM9|S7&te$dm!TUj!z(Q9b4wGW{qZ}G0u$R#dYM3uszAsZJdsSHc*utWqt-~^j zPzvbnWGN`mA&9b**Du*+gLP2Kq@xB_0D!wjhFaJ93(n3OHw_8|tI-;HE`1p5n#!$s z%Q4Xe!qj$OZImHVRZ0){ODdvjvO#^Wo9!9`qFxLLibIoN1no(3`$t3Cl{2b_4F;xu z4r?)>2dpC&(p4h7Q`2r$5^BiHD{EGd1(<1lE0LHN6|eyv-^y33XeCpFrf-6Al}g)h zM)!=nhoP#UN4T}BxpDz67;f>3FnfLcbYyB0d|Gt~m!78kGwKmm4o&}HNg04J_s<&+UB>u}s{osYkZl$%?n zKTL6+NoTgroQe$E^AtIASgi>zxRLCvd+~uz&*OyZZUOU3M~Dltf}^F<`0ePKJ^*lB z&k0_#;+LaTt0)Wd9b`opQJG1ZB8^bf8fD6AjUrkFhty#id|)Hh4vB~B)PQLxVhKXu zMb^hPAI17EXJbE_`*U#0i}$bUaDuTs?w~@`>OR&dyGvF>8CnBlpBK%cOO%l(6?cA~ z2oS5(dhn^=*=^*k_?fl?n^Sa|;{?8``SNl!&xb^GhT$_yk2<~_jZ{1qYf%{RWUMunJ7(AJMkWP^g6Se!=+W3ocW74=c;d!` zV}AkwhGF8Fh937zq&nx)?M}x_1~g31L81CyDPQtnxQ|dzqdYQ5F1TWr@g%gSGdx0p z`Rk{|b5}Lt>Sr3x9kLfND5D0)h>TT*owB%!E*bl%<)3ZMSRnZYEqNbCYDC4hhC*S^GQ98R# zzMdZH9#`9{?k+TTALCOznhYW=2|kcwx$|RU=5?H*o(oMM66P^+&7b@#zvg-38Uw;y zvmT{*o!y(8MG}|?8o%fl*}YKLQkA)(8vFzDV%7xTk~t^O#|)+a#h~y-B7#UMiW3%8c|-O@B@!GzTGlvcw(X>B@6MOMlMH7I@dOJm3xcH*fTA% zAQyL8qq9IyEdEM>N;vF79`44gUcU zHG5JzX@T&o)LEjS*1?9qq+VLEH?TX`7Le7BZqJm>?$$q*1M-kOWdjzwC1zm|vj(2k zU9ZpZXY`fl_|88*Ym7{VC>e-NwL0s-+_OJ(e1u?uhSS8}R##7~mib&Iv9q2ltG8dxB)t0|2^Z>Ft{VzX?%8$c zw!}opQgTaLmbL27faVNVv{0H3kwUcBgB^`$~){1y@Y44H{HZ}EvZIcTW`TS z9}atIhiYh{W|_4IynE{tEo1cS5sHI_n8uDUL0ZqkBtgRoaET+~`1d&yAkl&3VM{!a zPTuu>$XqJHW?4^7CU?>N>dj8CVhptSUhzySpf9-ubVm=2&s?TYUP(wBnoYnba1-Xt zOvcomX9A{x6vAO4M2%`C(|SXGAXLV^xU}6uEi=(%g5W8Q$zgw-cQZ}MR;{S>eqNd| zXaS=JWF1zC`r2Zxs1uCXqYwXVsnkp@QmdSIH+jQHe!mW+F?IVr9z$K|IADy?2LGjZ?hX&Rx#s-+_V zxu3V?(Y&?2;75FomA3i=dZ2QWmCs+;^vUC0Ranb#+S)|+IX<012??IS+{GaQYs>;s zgXO!LBb`|b9?^jaxZ1T`HThZgm-Omj_{}c*^ICEH4Sa#lJf$X@6X$euGe4!H9 zo{9|Uyh>11&T^Ug!eB}MlVz3VuhSRjKF$>xhDD5%> z-3S1-X#-(8I?lwZxtVI%8cfGz#M|*r-Tg~=VyCTx#QUe-4Z$9_oEq(MR#Hpsx|%V= z@nqndlZOR~A5)H@2(!s$EK$2Srirti;auo@3SnP5D9)V#kqZ2fD>LggFb9Jj%GpuY znmNB*_{#K8!b8Ruj{;$1GvJl#-R*~id>b0EuO5<=eNl3=C?7$GbU*F|{O!;vQRw!?AW&zdlwYvRR(BPoQOB7*M5uT--JPe+DVV;b1# zjgsqe1LTWtoV(cY6FW@nQAdaV@~f$dPFgny%PM zX%tpk)g>ystA|x@E8UkE5c-5pcE#CnQGMy`ot96`DeBFpXi7GBkbwNA{Vc? z&w8X#uZ0u)Hd0F~3CbUOkfTJ~bTXK#N_{_C{+ zw4QOVeXx#Wkrh9-mj~|v@-vxDIE*+$3hn%t3sh{syr2FNNM$!^{A3(eaB%dT$f)+C zM}p|In~a*T-KSg6&oIptd5Kew{9ToV;BFNGArbm>{PKY+f=pn6l}yYPh3*9dxNiSl z$2uMtkWbF0TR}XE49Pte^I=*V1#eUO5@7DY>9cgFnRktXf4X@}x@ZTvpzP=~e)}>- z?=n8iZVy8qDx@IoTGA>V>g}+u%}X<6y-n}hG7Dnd?H8 z`ctthJ|CQn(}?Ff)5g&DBG3N-b@aiT2d1`A;J!-K0GsK&@j9=-C95nDaQ=k{EkC(@ zn{dNVPS(qB)`Q-j98hmFaIyI=O)ZykV$CGOd10)#Wp!?`V``#R=sME6LA^4=_-rO8 zv9X*~@O<7-P~S7HLSO-2^%G5=qYTCDVYTq{-5?ZrbvjEJ;m?}dmh^Fswz0bBfzFp! zgaDPLO5wYHNtSdS>clQ-ld?M}t&$|!uZ9f4X``LFS+s&gGnd^7Fxk*clT z2Ap=UosqP%FakA1PD)MCB_>H&3|->+0CYp>OW^J|Tdw-T?@RuN zYyL~dYG9nwf3mLB#{5rD3no{h)55=|XfE;(fTF3MmelFbN=K0d1f<|>s}K|GIt!h; z^eQd37YGTM>M0m|AYQg4+cq7flo~5#Jt*k`96Ky_>uzT}7`JVi?$29kAg->)WjQB` zc_~msrQ#mKdm3_NfPT4jsZ@-CB`3;m$R7q>9Lmsk3JrC4iJev4vt*@~1azaPQuzVJdSpISKn}0gLgE`x(d4-^V0A|T#K2E1%9A044l@=gX&_KBdR?CLVsgK1ry=R(U zaVT0y^-P1o#lcuS%oJ>aGq+7Z`haq_Zz-g=Dk$)Oc@=nd*|`QeVQ8%pg0wxTc$9d# zFc=(M&#`tXXr;PTz1+fh*;Mng{R;hYd5Qu>J}}^P_L`snzJCImiv7?D)H<2D^_Ac9 zLwp$C1**eD_exE(zBi~@d>xRqjhRkm1{0M(wI^D5&i(-0No_ca{oa<|({u_=<$B%L z_|p+Y-~4GclVM~oBQp8fb_WK7OJ&nRejCJF*9oAyFY%>gGFM(-_N)0a_2PZq`4X#= zZEvdubSGI6w|s#1mHigNZWTE#`+?7krq}`+>C8hd=fEpsrj%Ab(k3FIrhiDM&wQ!B znt_v1cuKR&@`>`A*{FA6!DUL`eDV<8F|?8b4n$cFn^wnlj5S*?P~x26Y6N|(hLd9a z%lc*I7ns$fyK`J>zU9eoOb_RLC2#mx(O0@rorkUksJot77TlEDp75oRjRBRGk7W)! zR)t7uuAp(HZh7JXbex}ifjTC}O_GHzk2vw5dRU9e3Hmajp-jV~-?we!c<#OQeaY_- zo7XVPJnO$%W?7A!H$c#;1!I~(iyK5fFT?VCh52FT#sMWX3uSR<0vRM(`qGFKVxVec z9*biopmpbv`p40Glm(L7;m`3V2%$@GTbbfefrZ2?io&`mCafUFe8?y40RyWXPu$mIJqBSfNeSZZDuHp1m<8bu#U!l71+#`((r^=X38u@ zO~>Vu+o!abQpZ}g3@wL#04g|Pll_u|QAJ~)%|1}IJ)+)^?!o2+mwPquq>o$IOd0u+ z$qDbNPm@=lH^ZP0DY5;IlX{hHIzQHM-#_dT-$Tl(+nuO%Tm)CRqe<&wnAPp&svGjMLG!G3xuNxSPM5XSQB;H zxFhiJ35?D5NG=*Dc)LUV+4orSy1aO1)-uliY~%`Xl4ProP!D9Itj^UBRVD(A6epI& zXX6|nL7{fLl0~NOtB2at^Q0*Fbn}f%1^t2=N4lo1(Y5%m1ty(808z}tklfYFWo#eT z&%`fb=|SBu%i5Bu5~E+%o;Hts=vo9}iHXm@oo=E(7u*xZa-998r^<5ASUn3kjqsdus@v#uSl_n=VX9zg{4?= zC9KL(e&n;$kyy{AGbze$e!mg7z&No0Ql%~;jk-`O+q+8W!5taG)o$tTsz^RHp;WGD zQln+wY;LeS+fDer8(xORj1)g46tdD(9c5*b!TXx7m~#Bi zarRlS18rn>#^OB1unA2{I}h~Dcu+cwcqEup=+od-`p9ivnaB{A@IJxNm6-gVXwiRj z*%Fr}pkFy4M;k55;>u7zxGZrRhY-m#9Yuly(IK}aE_hkZTMR2cnB3J>vor}qQ!I4siSRdVFfc%uBR`@Dbt1s^@Z{pVGfX?cWNDd&pC z#ZA6YIz9wbe+^yT9#G+QPYr7iEi{UjHJS$B*Smh~?`U>4P4e^dxE|VU`jr}qAyOCA zvjkZoAF5_UU|5!4iln2T`5+>9Y&AAz=@y)knpCTNSY~qf(UYfpk7pMKvO zSHvAo?J+AOTz4;?-agMTVAGUp>mZP?MN0X7B-qt#lv-3On-0 z3h<8=esxBS1Oz~o7i4KXwJtdvEz?{%0QeDb+;~Nywx8c(;McD$+R|#Ub4>O(;iuk5 zwl$@P&B*1~q$ zLXFFp_7BW00_T#I&0O<8W4xNu+Wa1A=D!^muV@1E3aWWFnC*!sz%45>yRjT?1dJ0N zqGE?^qSqyB+}vc|dYtv_m$@+ddc|=Ct#*^`9(?)E&^={I zU(AM2Qia(D!5^&y_st-pk)*Cc@fJ_10zlOGHR&`4J{$ zaW&Zy&j6f{jwGM5*OGYKQa z9+rv0mS;GHm8Bnm*q}dTU(BI?GoI=t=gTR5?Dv7vrj-)ZD^wzLW%T9Fz}&9P>#$~g zExf5*I_^=p8i(*1|4Oc8U^5c}R6@%}c-n_pe(zNidY5EmjbB-xD@R?Y@=ffyxDTU~vP;?T%S4*9>)!52M<^r{$Y zOCMWjma<6n0G=xvurvnY35nkuE79)g;#zxI+`xs0gFHq=di9iZ(ldfmAjUhskb5Vy zK8wZ1(4mNx`DDmiZj#>m_b%eC@)=T6w3JVjokP5cXZkPLb(A$TKr1ssL;` z2AiPk>s^P5feJ4 zEcr-m0&2TxNs?1Wn3JqB$u=9~SGg#xQhfM}6vRtY14QvY|Mje^_aV4-=d6yWFDYhUp5Q0Q zspFx~BwMrGv&+jXWOMdNqa%tnPZn0%%#pQzhS-=Xdkxc@L%XVVG9xWcGTkq++qF;i zHa#0`Mm2EXTeO9mn-hXQu$Qgd!&e)>t=)sTn!=Iv3oPCngi&7a*}hPj$92$2g!h}b z3F(U#T*zgVF)K1A-YNym0HVJe%ALt+P}eR@(UN|QZpOySz&iWwoi!OC@9(3K)9lVB z!44SDx*n&;lm{H>w>2J-UmN^>VE*S%)sM1nuHvkQgY3+oFegavF!l)%I4eM^|j@crDYL^44C4P14}&oo28aIk4GJQWoxi zv}P`R(21xQq%jr|1jqPi$9VyOU+Dk9xbW?i92IZKE%7q84Ts-rJ4ARTU9AyYkNpSZ zZ~jjCdE46STA#{)03v<7Gaa-A!u}u9-aD$Pb#3=%ZR=9hg@`Cc*9r&{nv{T48xWBu zk`Ox5C4nFbz33JNDFzKlZ%PR%5F~U$Q3#!YlmH+tP?A+EZW*1Npr@y2%21s!m@!tF z8~&|Da3{;`+Ng|$o2jsT4}ldLzL;KDpYWz()Tz;0;i6{Js3=CRJV8;{1RKlXLL6GQ z9wurkEGN+i7{f>G^ZYHQS{ja#t|L=$d}=+JkZR{`)`RI^rTk z$v1&V)J;aIrNnrXnx1;uiJ!+hRabXsQ?@14mvPGb7OA+Zv(7poPJPvBOD5AoJiLL! z@Rx6)$iW#XxkqI&__kameSeclm!@^wRw!wj)t4Km6!i@az3Pt$8^?d7hfy{le$Sx^ zU`#j{>K!LzAVXtsnrDi5nRokd`MGxJEw*4I=`F!m*x7`eX@T(ixsyYsjp z)Vw6VkdR<0JF-P)NqFW#rm6YG_Pgkcm`lY;E!qIxm-Y+F@wQRf8@ds~APVGL*Pt9s zfezM;ay8jnMS~i_Nj@1r&?zdL;g0;mCj+J?o{_&lqW`N6r{2J$GsLV`%$_mESS=6j z#R})uEAp4t#5K&-QCFOv0}^ud>wntN)gj*&7StaNf8!cGtr(126m z?k*Qf6!e=~u#C?k+SkWRW*o-a)1+g{wQ{WQrKe=}^d))b296ydk3Zj%&=N&fmwVyC0$NS|+4bO_7e?XAs_9@$bE^4?8U){bt7h`hZ*; zuv`8_>=o5M`+QIFJe4`Mcng?j6H}pbVc0Bw{>SB^w;;zDmE|fSw|K9|(W^tZzQn$% zeMDp22TDv?jT1x}c5NV@;gZN9Y7pa@0VdYbej3@#-(wW47WH;1``+TN4Nr1T+PmsU z>6r|ZT&BVLitDyR74e9`ePD^olljE^L50$8ZPqVRt+BIl%4Pq!>{47iV8FR!K!#}r zC7F{^BnBBe=?qZ9AZ%i4zio|G&l@yh0w$S}XfJ%d?lQ$<}8p zl&upeKwL(WA5_nPo>*%Tn3rYk?6p&L*kL%Yq;;%K%R<*BQGU0sikxeE)Z^9RJ85dxyKJ?!Qr@YbQ{qM}?|Jhoo0^Dk@|LTO?q= z_>xN&VWk0>fZ5V2-X2I<+NBPR4Hn>+$J;q#T#E3RZZPPR#p>PdTRG>|BPjYz!E~ju zK6CY5l?$yDHBO|mdxn(iL?j+~osieyIBy$9?G?M;arGLQDG{sB3Y0U~!EQiJMwe=2 z?(m@kWiygY&_hRq3p1y>yKTw*vt4%JIO5``9`VAYA*vU~S^ojS{D`@2nR&QuW+o%l zh(Dsdc<~MV^jO)!LMGc8@TA1yYLK`>;DRV5nf}z7|88y6yf@o`awo9}h2bqtvqE3ysd zuL$JpM7Dsjr;-SF0^hHh*~>po6S?_$FSDcD3>F2n<=9X+uZbvI4axj$1}KW!5wU}L zB3W6BW26zw%Z902bwizFDruE7u6`pC!^c9?Xc>1T(zdJ^;mJBzTDC@Un0|xb%iT?1 ze5&MYEQ_6petOu%*33l~c~uCV`R=nvhk^k+LIQ?IQq-X!BPiVT9D>X#}yglb&5f6Mcl@{ZpolV2WAjs9vEmHSSKy8-S2P{Xp{=HF`f>PVS%B2+bXQk>Z zm7F5Tev(=ncx9~c{=j`q`pyn!5^Fu5v#UfHQOzM3n;e&m;t||9nOf227_T_$mAReF z=y>#%QX`SPJ_n{qbi5^6bIBR5{xHpnG>4O%(uJm2BJdj(Y?k22gBqD z5!vbFy%9u)X^xAxn`V8Sgg_uu{4-O4)G%g?W}(%48_OMBo_Vr=ddPr&p!cHTIs+lU z_}0?h$?3hCc#N})-xDn|CX?MQ#%_OeCr-sk7&4)7!HP)4B>9J(v6@c<8v<17^-Qq+ z_v?P~y~pJ@GfRlY{v3ttaS~|p8joZv=Z`YZ)h%ZACN@Osi_U4&(tZtm2@fRXB2uK! z?u=cY%^hc2g!D_@Dl<1^48o=m1*&F0jV8Qu5wJtz>)~ABuJ_yPN|h(l4eo_iIum4x z1j!W-SLOaMftFuOlrOpb1*?1}sJEj{2qKBH(QL<2Vef??tZMH&HoV}^d zW4SYCU(BPCHxuda-RkulKmEe< z3%utjiI5KAuR`~r$hdS*m68wKGluvBE&Lnv$l~NIO_xxGi?wD?4eVvf4<+No&zE+R zV=OfUuEZPQ#zaemrPaOZm3kt%J#{}?HFKLaZ+D2PSwIv&KuR} zU7Y|5#i}#Krs0a$r0hNBBN}B?SHfGZx*#0#XDT|xpzMeB>&#T#N_e+7NJy;oW0~qodjN&y*{fyiLE;Wu^(_lVB3d5?f7D} zIq$fTf_jqSH%2n-56Lrm{Di-zL&tOWqP^8d#B1CBfuSkQOUn;!2~Vo=lZ&=AtWKXs z5n`0ow3RR0G>t-!u!2cx%tf5M2*btrbN%QV(v`JWYe>E^An_zka?{=pC2P~ZgT>a= zF^Z?2v2dN9b?Dq8PXD3!ca`$Utl?Or@XE_bXsQEut3e|dL)^UywIHOK6UrXlALW%0 z0K|-a(_oD25IIfMHvQ6r3GG0bnR}ycdi;iJ*X=vO9`LTLcFoYIvRS^f>@+)jxJ}i(!cqDZ(O(4!QiB_c+C^vPLoG_X?Ph2; zggJWa&6%wrg3l+lOUSS0YyPJG;^C@goiqn;=ce&e+u9{MmCVXP6ynm|c@W4{%&76% z9NA)#nIWkw_@3ypP37iucED@KI!~$|)!0h<)^|fur8diFrAR^Jvo)Q=il@|Hhs_$= zyzc4DWVF^A_wFajJKSuBPzG&EiefS#O86E%Y>`2JMw^_4QjpDzhsdo4kVB$s#?v0L zsAj7H{soqD(bM)0!h+lu=@oW>RTvMGm_(e1Os?K4RR`x$g?M7V1kJOR(_83!Srxk- zv1{S$n$`q2|4C7aS#S#j&;UheFJH_B07}Mk1O7@{C(7SxnvZSom4r`wMT^(_1X!>6sK5){4|_ z-Oe;f9<{p%_4e}m7-i)MP_&??&w~C8QIAVrN8<796p>H$r9Wz>RI%-h6#ml7jSAQH zGK}l$v+p-@A9d2@NS~SX2-2tHPE3g!=3<{vA1SFM)?m-jB?RpZBScTZ2YcUMeJv*Opw)Z#Z znU>?A%EwyAj=MU{uUx{3oU{!h<6=siL5`>VV_PeVO|QuJ2}e?M0o)Ak9gP@V@!h$X zXYEzYOf=X}YaX+J^4@Ly<9#Lf=XV;~e;(WCuP2hxqWl>?O~itNLOZs5=rmb~?pLK8 zVYDgBHaBh~rCnHiu;Ye+29rYCb1DzESmli9AtInUHQj#!BVB9Ic2k`tUMOg-a0z*M zN64G9WF&vaTa`eSjEJ8__kN2H zJiTyT3RM<=^Cw5=yDRG#-~MRmwM_8M-MHj>=}U@#fR+nBbl3d_BIDc;J5q#5iuaX; zI;|Bma7Tl%x}V8Ta;qj)Sku;Tn8tVf>wmuz{x1#iKERKMAt}U0P0~+;%#!X#7n=2d zL0IrOe9Kio@RRPmU8zyFef#@`3?NW~$bbf~o0aP5@Hl)5Gp2%5q*`n9wYyz>mkX8N zeEp)jo0xJbM{yzF%XdoF1X@)TD9n#cmR2f(z;lTJqCz{Nf%g1En4>K$NnMUW`(46k z*E5h%It;RV>#S0Yb@>)*;id<{W)T}*^e5cz&i-kC`;Jt?CfcKCR81{Mal@NlG4+b| zgrIPShcPjp~KufQ2*YX`Twc}^YNvEHe-K)nq`H!H3w>n#Mz46-*FgjnkV0m-6q6k9lQ6`z@d5b^zoKQw8`vJdZ6vY3}9*JVAxy7Q*wj*z#=_v!?5P8 zp%#Jlow4vT)nRT4EfH>eOV;c+r_%wBkHc=g@IC`KcUp7EKmpB-_&BNVZ_l;OmWKBAVyM2ESLfe$4znbK(mY=7oMvwK zSZ#Ca&v9&}>}KVuVX){<|79`SB4DDa=((UU3!ZjI%CoZ8TVvKisc%c6TBqEE6ux*A z0@3=#7m}AIw0IgCEL&|6=Q`8cahO{svt}7`y380kA>Q-)bco_;?B3q~=ikKtT4%-8mwxN**b-QeRqR%<=q2HH+GeT3=-b{ zEVl<#j@Un`fUBQ`eqG)4A`}()q}xomL7!wVUo$&Z-?g-3ylt%c$X$QT$7=E7REMwS zO`5kQ%r1La!UfZ7D2ae}mW0&L4QnhjVUbjT7xnAoLV?Ni^XJT%* zs3KaCmc_>}thHg;m%wxk?>4Hf=Amnb{N-f}PjD>}Fr=%EGCCO?H-@KGNcA+#763WfG!gEtVl`V%iMkh&HK zalRMl*~XsVhZi^`GICg5x@4b^@5?H{i1uK-s|!56#2o(s|@5jZ!OzziNPNW zib?28nWhE?iH5vvdOb+Y*nuc;=K{;a^ryu`k^T4%q{n1~1Io+45aI)o}Iu}B; zn_jGIU?#kYPqL~?YxC?Wy!XbvIviQsdmz%sC-AvXgx$%Df=XWt5X-}5=guQ>dliWI z;}ZGdP-WRZj6Tah^yc@O-o}~Qb^B$0JehYlgC7pm8qhnv76&+gw8q#AnY5J4RoVAp z^TX}K&KNw1r9lmr@o&xCO5nU{J|j9}J;Z&EWF+4BEY9h<0GAb2YxU}jvQJ8Y&n!TXiyX`oM z^dVB8*sLrrsV5{CN!DZD478CG4T0xQfJOhw_jmn*KlFw#=W-XnP;fWDi#7v6(509SN^l5aM2F$Tai zjNzq~QgyERpw!BgV_BK|b~{sk9rRWAAB`??QSw7b*Cvj$9la>4lIT%E_7*C5i;ytT zpf3vO(y&$OfEIq_N;URTr=+u#O#k5Xx5GtzN1gs%N@7XvJw(`-yv)`d(&EhzRn1iw zS^g;^?*FqVNKu^y%Qu<@JKa%9pO^XMmMlzy1&}iCol;=!Xq=Zm)PCOi?48hI}S z{hWT?S#`gX@5G;y4*y3=P)Gkuu)Jx4kBR{&&r@NGnNz!ASv1$@ZxZ5K` zNkdVIT7BAhal9V07gpxa8?q$i0+|(Bm%cgkuA-*v{TZ5-q3dgrnIFBhi|>zt7GN2Q2jC^+0&ZmU(3xz>R%j zXDtW$cJ3VVJpMzTzvNJ7_1KYcbd?gmqS6mxZ@l&BN140yVilv!y9^#DO3edjidF^_OY12 z<1Vku9-mVkvc8UT%ZmyM!PJ;#Jx&Q~$8Hu_18X8%G#>A&PG7OO(1R6V2;_rCoBQDI z_#yWYj{m#4wI2D($8w^ftyO6*ZsPF~A@d<^s}c!nvekilP7^9aBPY&GEjyrZJvo&5W5$N;w#6=ncZ7^S&Vn-xKsOHnGH|WNV;9>{1ni zMe#1na?COiXsR?m6S)+0>r9`%p;uXd8`$K6FGbZrNo^uBdT6sYoWHgrE*hg%h%h)lEJA<%oxoaZr(Mzy&H2_tNpA! zr9tw)cB8PSxlii4`lSm=-Rn>9L6PKqczvDxcNaL!6}1k9rV*+tvpX-AM)HIue{-rL z03C+n@3Q`^NlCQG^W<8WfM**zS_ffWmYJybR_}SM*s2T6us>9g{cOo+@9aL%)Qx4_ z1_LZNSKW_W3{qxI_k#MCdFRygD?+QS^n>;ly2gvbL!siWue-Hr47CNeW$%>|bGsw| zXs=^`^2mlx9?+ZnTNw89HVf$iI%4HXCMLKS<4vV=gx(4@hn9Ofs!-zrP199fp+1I@ zzPS*8#~GukP$z6ht=fJkClXQgQWme1A`&M~?Lx_vUxJ`Os4H(Xw6A zPRA=5mn}2#MQrmy=7lwlQ1h!Qc^(Sk+Y0V}dLpEnZSw``BXf(V?X>$|du{B_c8kOs zR^9&?8Q?9O$zZ?L3p`b*Y6v7S%rAmi{&BvjdTO56_L-M`!^ufEg-y1`OhN)}!@5rq ze4$}0F}4yJx*h+JO%kw+6SM}PCdXkD zyh4{})j1^-X9(ItqOQ|`CK-ml8+ z#c1Sits_$0$zT4ee>6@d`is6S_l_jaq?{cACZ2acW1^k4=oBd!m4P8qq32DHE$Joa z3PJQSCPVTq{!468k7}>@_@Zj!XB$__xWckuN|>*OnhZHz59^jl7nM{%=W}MPtOcv| z^q?U`pW6Dt$@PK)TrMs)HZ~g=5)z; zx(>Q->wr-aHZ*FT@06hE-^^3aFF(|qj^NkvDhSP@0Pny5afUll8d6A9{FJ#h;oPe> z^$hs@`_((e{|*|@63N(9<1}(~wmE_#IeDZ(pOlI1s-Fl;>lw#m_EYcpc(S4Y#{;bK zi|+)Z=N(3SBu$mkxUd8_dR@AQ8}8dNXYOHwP-naH9chf`4?YrMj?*%%$D5L zb3iek=?pVTS`6L8&c;VRIbd^qRQ*M3gyTq49>N9ODYH(GKRc1bDniCfnDHZyt`{NU zE~uAhX3Q8o!059;!t_h}Pqz(q$2OJe3DWoHXU9TA+_)2?(%mz2Q%#o}@s=KurW$)$ zK19+-Qk@e|Ecv?%f_>tMt6mP-$1;JUmV1a{0c*y#M@oO&ircvEG720tBV>7`S8l+bbK)y*-r6Sj6ptrX<;ZXG;|@DWStXWP zwy*WyKCN{LI}`oMW;i%TaVwqbm>$wlMp&Hm3kwr16h3!xADO{JNFeMr=6e@^OE~X3 zoO6}LcCDa63lekarky8F1IPdW?n6T|d zX_jO)uk_j1Awo)>M&x6AzoAH}85I~5sTvvpVc%?ily)LzCzkZPiyf<3&6a)+#z_~c zqkj5sNcm#}p6oAgb9#v=4bx*fxe&@yTDm`k6!lhNt z+k@<6JNnwU2bYT>)A*SXMV&sA`hdRWb1zNbj|O#hTZcBO4hks^_m9u#48ej+DgJTV z@%kR;Yr5znMNBn=)m(t+!KqSp-~e)o`hhpC3JsE_%giFydaBoS+V~-*P6V8HEzAUV zYTXZ|v#CXbY5+AH;(GlaWp##Oy11F0opw1*TWt`hosa3jWEjak97S)mo8OgiDB<~= znWB|+o>u1G<0CVH%XS#4fZ*_>w_ts3u{SPCRXhBk6SPfIEEh9&X3JNNv<HD_X=XIlo8;sZEg;R}TaQLv;l}X` zeL~ACt{!2_J?w>t5&|fIggvYBb~M@MRBzpvO7-7o&z6_!Y@C*RW0T>nb0l@464XxB z1$W~~wSYoVS3QV6%kOS&SKV(>%4J8bDci@t7GFzmF&?$C%3PLynoA^QuGFG4$>@|O zGF1773u-e^;z6OuJH9h_<%jab^@(g*woC!q9ZwVbQ8MA?0~`99%Z<$IvS!O|B31*J~P|*b51JM&bL%`vzSu%35#nXLK};B#)ztG0 z$>oHix{?-=(7kVyEy-f{l80@)^!3e6>9el)r{j?)q}3$MxmmoPI(uLQcq2*AK03QT z+ox31lvs2r-rQaMxYx|Hi`^M;y%Ap_Vs?EWSX$(c>`0cE){dpd&5;Hcqzh9fD41W^ z`jv)ul>HQs`X*Xw{~h544PX_WeH*AG^kbb{C)i4wcXg>m!$w)9Q2y$ZX)!}*R&@RL z(}D`kE-}*Y4FW1-b7Okk&(f4@E*qkAp$0(?fp~StqO6w9LzmWmZHD( zi=3BA4AH#g6LLdc1)3mW@c>c!xoDC`1q-0V^Q;JH35jsp)xsuwOvJ{Qf*pyYZq&(B zDMrUq#QTaWfE@JWtc+8kao0knr zO&#L<4?^hiTbPX_M`!92jP>K!bQ(H*-uf*PIR?JeT{$0IXd?p-Ecs+qrQO$4@5x?3 zv5bERU2@?=esc7scb=e8^y+eiGy`&p$jmeQ5=pkSIa?Y@s`VlV;E%z!5w83Mj$hH4 zXEhh^^%{rA`kP}W^1J_;RQ6TZD(lUf-h+gG^G6kPvwFjzfPl^zTJ$umrv4G?yMkAF zm)F(zK~lphBj*QM;pu(Cu%q|uOi@H)1Gpx*W*J4woLPceh_{Qq_^j#oS#?DCAAOKsvn`%voY0{Sq)Jvs8&BvEY3$T5B?kg!bt=g#s0>2>$A|}M)042L2CbybC9Dw4Ro@;f zbbm3A81+51N}IvZ1t5~EZYZ6emp?EwD1xXi)~XQUM37+o&4HMnfUlvaX@^+tF8^U> zVTQ?WzpBkEME^@0n=6EIHetMr^o6;y-%#e|L}r^&uLsn0*`R{hau8xj)9N=9WivdYVDp1P65z zA$>4rS)V7NclHa-t6agdq*xcyFuYJrwB9Bk-)GNy$b3%+!MKFbWYKl(_@5t8Lz9ct zw27}n>TY`9^B2Nj}& zz3@L)SXI{`Y!ZO&$1u}J2SQeV9y@h1M|QI;mJ+gJn5a4N$I6IayjmBo+gEK!!r52SWk+kXh=$ml`W4mbO*kIo6E>70oA0@1OQj zz*0S-F3w6~_-r8-N~Om-E9dY}4d3^wPS*A`_ALgazy-!oGmI)Ld3X;go)a}k$T!Ht5>y2w&*%CA6xw&Pv#)wW zHOQSbOVI$C=51}IpqT!L_H&#ML>Gr*^v9&wwpIqsW!#^9=l{uD znq7G|8!to?k?3J=Y#jSahrJ(JFU3x=Oe9aO5THoZVYV8s+gUb~*aBt6tY8ABFb`gz zo_cc&bK~$hu&D|jnuVJ^Wo86DQsw%_@!;>dz=jIs9e~`A6^hAPx>99BliYh=xN4Td z4c&Bd0!}qSW-7#sqeJ2~I73e=3QrpZJxO1I#+PphHD7UarS#edeHrM^eo_TknrK?y zUC}eWa)?3q741tnM3)%*jJ&Z!h|0cooRK{pm#I#LHUIc2^Z{gQ1V>+28I70xlA3*K z<+QNa)&s_U#7Bq;yBu*KYdaYR=iugRbJx{M&FpK78FaF0(u~jmN@LLU6CeL&-c>m0 zkbK%Y?}jaM5h0^9sS@T|P}t{J0~t2$l`TPWvZ~*o1h~43)0YbiqsCgYqc9c&hH@B) z;muH3WRM63RnIlxQoTlMo{_x;NKn?GRbiIhT#vsvo(p<+6D}k90=Yw6**Yy0dyKc2 zQ7$>9(azKSfq?*`)I$AYAathd>sI=5nne`6%n>9(B+|W5ZDyeaGL}LIAIYC`Q?biV zvcq83rPr~=Tuh;$NxFK?q_&enIQ;4#ZEw)J6(ODB!|}15!_rcBW256F0@3DlJr}`5 z!R6#41$kECIk0lfkVn{IUfDt}&5WH{g(}DTZ_R%)cWb%Gt*jbpg`~cV2tagJ{?|4GXDjT%%{uiG;{f0BuUrxXf-Q10osL}+l=1CT? z`}b{Yvl#p)yT~8POF;K7l`^v(l^fTJHcVQHW1Y67B-^&lyXQU)%BE+h#2RSK#ceCX zcOJGjK5GFz9nxLfe$0}dvdYbtZdUb9&=4sO70algJ3NSu8-2|cc%8GI>Z2nT{2dzW z9k7>Pe2b&wXHtxd3)~&6Ryf=c$so5!Z^8l6V)x%TNH?|EcD99;IU_(9|7sq7fJmau z907U)=kpB#+0wYBP_fJ;A>r~J=SPquaoQNorIsF|~hlDrxx)S>AP zJuAQ@+SdgI1CKnDYi$FCc_qxB&s$RCc=2>dczg$zIL$sVJg>ms;N=dwQK9x(GMBSU zKu%{3STaw~I`jum(!HQx%pOw)XcgxoT?0?UrCfrS8s=I9>N}WCZy~c!7LD1xBO|_ z?)P9k*4^#AhMFIwb6THmTP6<3RXp_+bcxh#2Y$NRJu=KNJTe_1R&2S>6f70Y z?w~sgs_DUK(N#(DyY93hxZJ(hTVKKCDnYiWEY5F0cARtfZ6L_Y`&nnB-)3mTyxO8F zHLsIDwR*@s+uczVgLdAVm#T5(z;xb|0Mgb%>LLJc-6(}*GvgBy-AeqFPfwA>#fHd+ z*3Q0NT0W|>`6cYps?qYKXT990iXM-{Hy%BsOj#fwY!eWdY%v)(j@kbRcAL9hHv zn|})~uKah^{_@U-Q`D9}`Q&f&#`FKv@t=$J`VnAe;bNw%Bd21RQzc<4v4vRvSLOb{ z`v}0H&t9Qw-tNHDU4*AY!o{jXi*)mY`RcHW@)Fa;-+pH2TrK)1U+RB%8lJ8BMV~{C z1qFS@$pb8hEc?E&lc0VJQ>xNESZn|abZArB|7pK%KUmT}YiQFTHT~3={_J3wN&+DFsaF3IrKwwH)++mpSEg+iWg?`K!CW51LLUx)xdt*m zUlo%;+u}_D(vd<$JYgyG13Kbjzq=H9;7XWtz0miC;d|~RLimOv3BK)pm_7A8?TOH@LPOYdjKR56QdB?qwyIE|q9cXc0V{T>|PcWvjQqJzD;FXC)$kMn$0&KFnR#M`aPk?IdT z3a>fX;uy$GnYu3Q%_|DJ3bNYgeJaPZZdU#z%VXm0t>T1ianrUeCBaJf=Wq3oOKt8c zKoL0LAM5b?+l|$IIw40VuYx)vbMqJY`7X9!+c~J&B2`v|5x*Fhx?p?LWSBdr?d2WCX z>%!vxXW=G|48Gf@Y`OR*B_EWN5j(T8dCJ z(^PwKEWVz)WiU$WxoU6aTCJCrj447b5L^%=_h~!WMbwN|n`~mxbdBIw#(3>{`{L-ewO1yl( z8MlRw^MIU{wIC>zt7irh8$x)9O%a0zfaMu!R#CxLv%b9sJAZmek?h;VP`S9CiS(*v zbK!=W4=BRh6xADHzNNjPD??j6k{1ICzf1vKp<+=*4p)_M#9DdPUwnSOqk`y6&;gnF zB(84R&uoVlK69e#gdfJk+qj(ZEI=7{u4Yj*lbHs6ntVc`vlx95=39k)5NFm1m#L(v z->y-5FC6t9u|ZnfQn9uSbXYsGH%^8wg*`+TfddpphrqeZ_~{Afm4Rs%|^3Qob08;O!va9YXUS2l~ewUN1H;wEC%5L;nU_ zEy^Gza-SMCv`;_E?$j>(z?)tb09AjPQ$3 zw)E~?n|WE+ow(J5IKxO@HngLP;}dmAp{ox{YOyIpk2H_fteC`RDkMQd^~H8}@}7J7 z9>nSK>GSbj8q(>qJCd#jo8&e%S#}-P?}tZK9({hc7qLGa;=bKi3Uf2ru|OH(zqX>M zc~X)M@Mv@mQv%)B-Fy>Eu(-`Z&T7O+A7OSl{Jh|Is{ZF90O(s>d8Tp&hE$DVHiwZg;uVU7sb^UzQHQ~Bi|9RJBxU0Z+UHt+nT{ou;_`DU|! z02CHt50l2UNLIr<&$xSa%K4ES{t=BArZVb5(E!ZvZHnYIht>j!+!*?O z#}n4e;(*KCw8Ge8(BQ7%KOM?Pp0Oay7afsuA+iO@LTs@Xu;Nu`30pBch8twUeGIxX zyxRJUuPvHcf0d~dz1n)Rem2S-thF`-w+x4p{*#8a>TeBe$cFvsr`(m#vCz*V%VWF^ zBkHJi4ypw`|7W|_sry5QhE6rGnn0cy&8Zlo@AE>qdm&>V!9|z1zf>qdB7Y>htEoqL zKy7%gjh5G*1qjAceCfW@+J-(t;7Zj|%e?eDlL@z#uNlb$#fL$+%lJ;*{@29MV?sUa zz^|7muE~MKVS|~Wx3_g{Vn_NO<5Bl#9PURK>2WdwI}QWPwGsPA4deatFyC-_8~XO? zCw-oJwbr;i@U)feHC3R0Fs$O0?UOA7%gmUI`REeLX#hNuL@-?M^#SH>F~{`P;cg!E?j&ES*mQm8WID`ghw1uv!?dJdUyfj;V}b<-PfhZQiMi|cQVe5eWWtk=R_`n zK}(KK<`20iMP=5;|C;;R-RAjS1HK4UPWi*q&^)5lZXr(SAMMN1&6>Ght!uZq8D4Kf ziZZp&lQKeEg}&vAw~&;zwt4 zMlW_8tXG@Fd1?>8^v#&Dc}v>zPLre%m5B3s?DP7Q?mWYk{n*Tezx|ITOGm$`Y0b)< zv-VyZ?AJ0@oH9C*r=0{Km#0t-20ANDe1?Bw4Rjx%c+IHpGCgdLGc2IQI%I665yuww z=5?Y4K%`WwM|u^Uo<#KdHWb|Z=gS9ssUA#G>UZ=AZ4xG1FPj}h3GAv}qCGdv2Gh2| zQb)T3bYhFq_J}-vebYh6hWVV*bap^^P3g+4&cH0{LJe8*T#C6#_{G{@y3$t4okXV< zP7*_JY#>AAKm(2@| z7W7`{R)@HGbw%CCu!*A(Wpk5FkG>7q0#NBnd9{3&e z7RyLtp2^ear!St>snloJ-_0eG=>@2zR)^LPj4N5(^u*4+H^SCd zEVroy%i)pbj;n%mh|43?!tl@2Y_gvH76if>R2!+e(B0?Q%yUWT9`T8==vTujiBDCQ znU2OM$X@jRALP9USW{W|FN|XyJJOUoLshEu8q|>{br3=z5ReW5f`r~}AVokxdQ*^= zK#%}|5Q@?}Qj!oLAiekA^gGUb=MHnf`+w&x|L=L;``yFynB#NKJ|}DKowe6qd#&GZ z%wC~|WY9)ZJoXix@8iGwjWa>aSNl0T5w_#W8Y7yXP=5J+dddGJ-b z`qr{;R`Qg-7Ku+jXpU0aR*2+uqOg@-+8h@MnI^8NI?s58C-t(udfeAbO|DezIK1QH z%mOZbgUJsAJ5+#sYShM6fwha%xOQjU(6T>>{xD`uH>H;Lp}%0sy`A?Z^0QmC&o(oy z;~WcLUYQJb8s=6(zqg>|4^Ec>ymuaq#^;inX(%Fyo6wa zN32kWjXAl|b(0imXx)(AwObA3T&ZgQ$kDDfhUQ+r@W;aocAY?$n$xod7FaU_n>flc z)>go4V2&$1G^{Y7%lR5|60@ZE^_ah6^wurj)}KA|w&@#9Y+>AovBTG$gcl)1w^zoJ z@+PF5mavf4(Ms2C+|**mSvUc@_qrjwP3St=u&ReyPCi(mz)d#`jL}xSVXU2+5Tq-U zRw-TV73*MlIlkXd!n>pU%Y94_W9A0Qkl)=U-=}Tip*n@T{wWW6q_I;Uqkil*``M zJCf!k=hPllR}9OpHWMalSB@@kxcXZ=4E7^4i~Nb@FKx2oAStO;!{gwJ*_(4fF3{oE zGt|FKL(My-i*h$}2_xoc_M;MB1_4+onyETt+PCa8uDNb|`Z%UDOpV>HzF?eHHYYAL zmpL}(k5vyEvpw%Dq=^*~vGv3(jF|?|vCRoLU#@31$D8~5t9~Unk(uS$7$odwbmRo{ z1q&l0l)=*@-p<98valuw#F1$Qbt8AuMRgZ8jSMcaz4l0>+9q5)Jq9Xh_G}`0`#hebk&Q$OD}t-ku%F=%$u+ z1t;QbZO{yz3?~%emTCs6s|2Vk$7u`i$HLZQWSp@F*ZY^D)+&gCFpsQcpl(C$hzJeK zFBz=jxqQ(M53a=bclFR&dsK+*86l%?x)Ut%V-ROn6mw8eOpoM{6l@&Mi9m%m z(=iI+@s|4ff(|^}t)Yby<%`l@?<$7`j7WV3pZmqU_-xmcxEP?5+dbNs<=Yn-k_M2D zTv4mUOWWPQ?oP$TU=^hV1}0ri(&+&fPi39+9{e$&`n$40Z?-l@HvRMDyUuNBq;PM` z6R3L5=?0=zSCFfC2Cu}Bs>dx=B1q2F+><$a9z^Qb#r?obnxF(rOc zr-Cep*%_HjcxKq$5~ zN=f?K*Rx54HOF*KH-^=%=l@A}aI!~3ik&MsC49k4?=i^o0K2eV9IQ4!a3I(Im<-7r zx=BlqyN!wIOOM;Cbe^U;WXGhHl4luj!D+k4CoBYXz4S@~t+J;sRpzxXBrWdO9mGoN z8Ca{N^34gFabMpP&p06^CEJ#mJg^ikJsGEqD%#@YPcLJ?H&w%%aeAViQ8>GvEWe3^ z4lE2g;p(vc!~%y#VpG2|7(6rpgpHpRRR1xg#IEoZf??sYtO4!ph9)_w$`u(2%h;#P z`#)DCtSWSlhFh&$9_vWC$Y(X|A139XGJo#8q&?Hu3XR{V=c8*j#5yH-rHatSC0A$) zCqLJ%-=}Av^WSJnuA~XE8kq0J8@>(Q(BiU;ltQQP2zLVelql5p&(~{zJ^Cr}s8?E8 z;;D1p=haHd1p48M)aFb{uV`+6F}&gD{LZ_GTsyP}0C3nPx zwGD5jI5{T^m1@s4>{(mn8Ws$N>Y}2{Wa8GvgLJ+3eR`(Wdm?B0*>hYNq@+9MmoZR- z0=szu-j*;@U04V)IxWH#N-DAbq70sZO}*J;i<9NB+7F7q&Od4u)Txwim(;BHFn=uB z)|or}h>xG|xuu-Ma6?mSyY73Jg^YS-_f8;~NBab*2GUZpPY^1*6+E|eos{gOkyhLl z-{bQRDTaLp)+P~_6HyTmQE&b-rkG4wsR6MZR9?Ef`1=s)%WysUO>>X8?Lv=w^v50f zbji5ZC_6JA{f#VXSIdm>n&_j@lI>{1GMY;-R7jIH>amU0*sQ4O4-KS)t;}~_R_<=% z+|lS{f-Jf`8|ejPV)&jl_bWC6@{&-WLIwMOOG^T4F}TZrr`_aPt7gDx!@|NI7i0}{>k&XhM^xKBcj3uVeJ+*x%wyEU8 z_r>!!Thg4#6?*4n)o-@cZ`-&E^vLM#t7=--2fJ+3zZuopka3-lD}S>u)`WV}>Ev_m zJ+uuOPe*>UUF;!|+=rJpelt=3VDmcd*NfI%4+RjfToF0>%MKQyq&;X962&`&V-o(_ z)IuoYnp`qpxNt)qH(dTXhYQzV-7+xmBB@{cd1VB(CS{mE7>dQy`cMf>AM-%*D<(=_ z&6CjJnEuNj*6(Z6%0;n^Gl55`*EB8#4>qKiEt#nU9C*c&eiyh>Dm|PB>>nUA-phlC zn|s+Q9<15e)dJ^tb+3%zaORnvp=zu^awM2m?61aF9g`{ ziNWoJ7|2zkyyd~49h_@5%Th0!q_yi#@%?* zpXN01EB=14I;7#AZ8)JzsP>$wOw2QNcp{H89Z%?z0e}{A9$@mz#Uby~l2w;TwKt2k zEoNtKfZG-@S1a4Sivf~Mb%IGtCrM&aiE5c(wc201$8UVfp-{7?Y4<+e7|6_OE4Q;E zMR+%>`g2p{$e69Eumn<48Y#-bFORTmWf50Smx15{gGw%y%D-)RQL^ujHX}M$ip&7cmnv>Hg0xqu8f|CJ;Yz4)54+G=oe>ecx!Lpl6erANPYie(4>J8H%asW_#cllTjG|Nqx>pec+)sV@n>{ z5wl>DPZ_ALxzv8lv5CiDN}drZ7X>h1+Vl^z@R~NB7Pc?H(OfsW8{z+l$02&W$iP84FY?6 zI8ka9RXdaON!xegZep92i19ZV+RL(olVsQ!9n?N!N#7bXlH(K{Ik!3UL zx*wp;(jN(m?tO2(l?4ZM&UY>PMp=0#&8{wm`@Hmi=gq|%7cyP!xn$w;;A_zfGIkCP zmHj%Sk*5g|6rLQ&34PrjylTl-x+cqv6*Hpkgv)}Zs9kA2~=vQ6Up;;KJS zbukT2iPOeG&@a;MD)ci0`IVJaICqWc3>$|6*!B`TJqlOS-BzQz$1rGMr|Rz1_8W1X zUw20`3j`TV-M#C(!hF9`0i1AHmtjKF}?0Rx}SrknpvGx ziX*g=Nx48K*5du`a|zC1A9r+XrY#Ihb4lk3%_UkC8}FAT6{B0rSNjQK3aqr?7eD%h}xC+X#N>iU2mbNah`6a^C29vf1lG0wVyj&^M)8B89>T93t7r)<+ zf1poWul~hL+$)ZL4L$=w34YoLd7aEt-2-!6l{S%CX!E4(u0bc2C(mMW}@SiC03%dToIX< zG#6@5Pr<5VhHs~9ed0N|CZ*Mzgy1i9b6H&~MMbF_EKcd`8}-oH)Q0u&MbOP{mvgPR zWv+z7$d-Pd3ZBFFx!$T}oQkrgyT!oLzNo&QCX>yQha+U7C`FY4&-!Ut0Zzlee}r!x56%4>1&A~>>F)M9 z8o_Q4p{{3zih9R}yFdAMzg%{CKz!d4-Z*W~_C*=C3mYH;rCHD!4mLptPD=6vUWhG= z{bPjVz>J2wexGDojjCiE8#Y&; z)<85G%zI?JD-`GyzmL>r(qe&Fe}Qo3P!|%bS_V>ut|z;t9V-8DPA>K#b9OI}H9H59 zmnod>5wFfAR>OH>rT!fox%RKd6!FJB(!UGvTQZ6ipG%DZqe63jx*7;K# z`gAtyq(AH^775m(uqm|U)tsK;g6!8)PKZXuEk#PnuJ~j@NjdYV>W~m9h)X(fTrybp z&eyM4gOzVIJ(f&P-)Q#J^7oiZ-(c&851Opa1(c9d(qyxnw~}{wXNmsznZs(AWKzd{ zOx*g|qGz`dn$7p#^dSSOiY2=~OAc?th>lrhb%bWsQ*Mi9TZa8`57YsBYa7i{rUc~* ze^OGK70ua?e~gO_w3#%A)XW?DVR`Ro^%^=gR6?sn3IN@_0m5`IfEW~NNT-PjPDEXAGp!0S%Tb7 z6rf(|H)a`vfJvF0XtTO1TBk|`RFB2V`Et)slpplXMuF-oc93@fmUM_wZ zQGPC7Q2Etdj;p<3X)D)5Qx#)GFqzP&+f+Q1=f>t>47NTH z3inIgawiF{DtN<5Q;kv=l!#SckVdR5N5YLCUvPa&a<+70;FK@O&x_XG0%L(qyYX+G613xnw{J!64l zcC~Ri41vx((RYTzUR?qpQ#t6xa*HW@oo8x((_@WK5|X67jQd=yJKQ=}Kw$t|E4KXP9XsMZi;&$*>ol9J7qDbH>fE8dE_{L8eQT8f!r%TyZ65K+076}=>iF|&(b^Qc-= zae(wc0?}K?wX;wYf@NKVnj$tys8gO)wAB|dtbC}@u+L3Tv8xi|{ly zthT;XJjBoS$Rd*q@IWNnNM+RpmSEaObu;tFZev+SL%-7e_~h>^;~%+tJoB3K6W3zj zR+pH_26SP=I69a1KypXtGxW*HxW9T5ZNTx&>jxK%zvg$|{OUHW2pxpvK6vttMn@-# zbeBf+ub%U_>l|{)aQL9T9Z&(Bp6(%c%K}(5sWtOM714T*Vf$+-{rF56mAJDeWfC z$r0h1nTxMr<=VviJVb^q(aZi5=bO~XV(De2msIdzmT51_h1d*Rf0l9`YyAPAbH#hL zQkaB%mMRZ|U=@EP<)INzM1Ff+>W_R|i{AQr*B1{`Xt4+%y*nX3wfh%e;)M2z97(oj zhKjGv>V>Imtfp%IkM{2cUL<%nxOj8cokeXj))=n8e8V+bz@a8GmVnre6ya9<;Qv!? zFpMxRQx$D~;xly5vhCD=tueU^W`f>#qXPbD^!k|clwX{^=P(s@lXm5pnmLYrpAS#| zF^#L%9&7X`Ax^$6TW@}IZs%AxU6Z}D`tP#!y1yGT7Q9a zN{7Gn$E|Km`!q&4r+eIXKe*=d_~-!+3~{b+EC`S2X>yRXrP@fHeoQWyf3^^dwC{ajgaxPY}y^xajQLDYoSlae^pOlwFs0>%Ugc>CxZRubcJ% zuMWO)Y`7ZUb^AVupRynQF|>a^_5%+;cljB)o&DGU!^Zewdrq~xDW@MK%}FsXkLbYo ztm_prt6FLvK!4Y>qIjcRhnz2k{EuH(eWe0sptEgwooHZV86uNhV`Ht}dp9p+lVT(= zPfM#iTf)<9uPH+JMt$R}3O_&a?!N zoM{QkwW6Wf|FhXYBOifXIANnz>^K1I{!)rBaaLfB5S|)qo7+u$-j6p6-7^>GxKv!Y;s~u()rIg}imxt{HRUpoO3cVF;y_5W{M z@aG%;n}&+JqSEG*zIq;|!On6indBm$qhBICl(dN6zo-(+ z9t~~i$m-;GSOy~uqqsH(qkb4PAasD;Vm{-ti43$&{zgg(>e`nVGPn-k(Kk4`Xv!=oS3sf-CopnjuB9!H_9N9qB|D;KmoG(nUv>gcN zVew@`a9~SmxzO`@0=M8>|8S`ZchN~6zq38~TtOi>|8F#meWS%&qz4bJGiZkyRk(V5 z4P>Gtq8X%=ANVxDs@Q^rUVb34)=A|#%II7fa>TXy?%9O(uW+rWJ7DjqD z>cTYRTNpws(YZ*KWnW?HL^@%8agwlT*J$=iGHeB0nV7U5d?*>(Fp}9RKc5&S>z(FP zspVTm9zp5ZJIq_7qGjSdTt_gb4xQfla5q208)s-6y|OKw*__%~eD3&@?JOqrhdzCy zsp6ZOTD-b8hl%}=o2C#_uls=Mv@(g0nghd)FAQTM0PN*XTKQ_hBQPYgnL-<3Cv9Ml+DTbiWg z+79fJGkAuaf1K8JaC<(Uj_Q1|s;M*DDJf31MT{h%Z6ViI%0c@SU#5gB64PPPBP`f{ z3ln9B`cl+n`hxLkdN^r~U(tv*6pKjN@U)rrwiR&J<`bLE2X@3l*3xP{^O4#e=IbNz zMe9i!=P27g4moI!G$5|+#;O2vDlQvxaS2=zb~^w9WDb-si&Eyz<-hg~E^U$q^^x}; zT=*%1l~8mN8lgq5Z@qkPF3~~sWr=d)_h+w1u-k@K%Y+lD8Nice`)ODP@BSh1KY4cD zz!SXpl25czU3Lj+zVIA6E!-CAEutWgl1%Jw zHboy1{jF%|KL3+a{WskH9~h4QU8-w*YQjQ(j3xq4zr+n0=xe#=!;w>T4`s@yy4_<; z)v7AIb1kwxyfe@yu4m-B4*L7W<)HHXVx1=w>ibb!1YekIHpTB2c30arF0shAJ!e>Z zaGGo7j+O#Ugy(imPhz7h%gxY?Qh)bV_@cCRUPDC~`K3L$6-2_FzX|a5==)*0=&Y#H z)61Qox5mkc_a#HOgy?Bk^?v=tCL#1y(-EN5{@QTAtMK}ly<$bLAz|%Y-`UkoIulzU z(=w}qQ6?Hz=~!(!IH~QsDk4;_zv=a~r9eddk}K_I52$!QU2X_vQ2)N zrC-%D32|$qJ$(mib0>_2K@x=Gb1KhvHr!lPp5n&xfp&)6U^u0{+0hGoQ{BD_D--ht zuXWs_nKN3PPfEk~_>8zfX$K1OIl#ivp_pxbA_U>=fEJE(HRzYk%L^Bbg5dQ6o!X52 zIlL6%#=JM1!TKu>4l}`2wH?k(0Si?{u(tm?e=9&!&SQ}&lB2Zlh~<;&8ed#a&M7)K z#9`-CV=EeGRRWi86xDgPm{Em(dtyO{?+;1;`7?We3-Dfoj!as}Od0WVW)O-vgu^hv zj_0i_d-tE0?%!?k zpBP#Dn@rbn_LgeM4dJyj5=kAZ&^)Vn#_E=kJ)(@c&B9?mYtyc;Fa5fO_jG=;dU8^R zAQo@N9fibqBQXGEcPEfDZ^FFaanotnv@`w<*ceQ;)rfO+8gk2y@@R_OP7|I_@iI5< zzNo6Ks^?PhY*dxQNLNq5JTxWK1q9&OQ@!~lwfj0`&0lT5a+2}!Xrx_`x9wBSS-=0| z;x2zNgEPjT%M*hxx@X7`?^j)ES($iaI`zKc2fb=b&ue=32;Q>Zj#$Bz)%6uRcd%B< zuZdsH#^f9?JQMU%Oh^%;zuk+jARan9=tT^ncn=7nzI5d=oJg^gpT(-UA3gS1J#u03 z-RVX@?O1b-Y%-}OikA@Fd}w~~Io8=a$-~XJg0L>TKIsOy5_)j6QUt{-=8TAuK{k|g`PF1>3|(( z8jGv-Q1IM`*G`hI42hqYjCgasPpOsoTgI(;`0)V^~Hv59l?tihBV!>)~uyHfodW=5cJ3H{`fHUW)dcCZ0s=H=M zM>9R^jY88@Q2cNkDb^5!W)!<*iRoj>-AYo^p4+P6@ZDOZ=se zt&&z;8$ zR)n7!lu0R*WPqvj&Q-c&RYtl-_c;!kh9u6YKx+zZdC!-l5WpVYq>rzl6_Dyzrf^BG zb?+W~Um6%8)5rdL3!(FkW|JZ*%@?G%AY$<3Y=Of2e^!M5j{E-kFXSlsAa_>i?uoW1fAOkwwZ}u`?}G}z(dbXV36w){2ssJ#z5f`Po7=qb6AkZQ zJm%Qt6MMcCIyUYofMf|G+XaiJl?Uq|G3!BYB=N$g82mw%=)B5twxu_bN*+s=v5Q^s zOvgwyVoMk*MIc(wT`Od_O6$5j!zjKok$f-`{h}W7s#ZBnnkX0O`?|?*T5LKUZYFA_ zgq0>t9k6&^Cae4AcDX|Dn(zgQF%u`P-`443@z6(7wpm@i|PvIYmT}V4>_do#~on=@~cR^$ks8_-Q?fn>? zn&Mnpl!y$xWa^acwu5WXB!l)Bw>Dqq%^Q#G6I717N%=;D z@;rJsR~7rIiSD!vI)%5ocHh!-#31a9F$r0UwI4(>@tU7^r_x>Pw>oOF4A+)^t{+1 z&vma++VUC?z~FU?mLys%G-%JIrS)JzG$$TCIW~6w>C=q~*p4)51`N7}j*dUzk+_+D ziOP-T2ll)%p|!#d+ZQ2fxar}tAA@di`|0*oqOz%}ac{6_NXGu5;^?6Y1|x)r(=pV@ z%4Frb3yJ&63f!_#kWK~4$PVSMg!E*Z$(Yb%Ft}ReDiNf^-rteZw>zAioSlALt&6OZCjtX zR|e5=^yPrpYZ-$jB9sm!B9H~W&ST249y#sUvIzanHbdz9F77syiX^AF!k1UguBppI zx#F@wn0Mvmq>{e1pnBNSj)PsA`B>&AreX&@1fuFrl{ad&y=oF2pkzh` zM?{a36@3+GPW0kG{4OjF&4Q>DSDE=m5VDb}Ei&gBQHuw5zb|=J6riltxsc!#t-zm` zPFKP$cn5aTpk{m1ypZ9}{Q**GPMG zEPq`!wDw{yVTE1y@znm>vha27fy@Cj%$4p2b**r2bj}l=pgql1u9ie$)iS$a*x*1n z2&d-_LgsceiWGDl6iPFkVI4_+9x6`}NFQ-n6oIgmQ+(M3;b|}09dH1zuYSBQSYRIT zCA86& zo(e4Ab>19J%~xe5)=e=$qqh6lUABW{Xh5*3pZX?;i)X=N38+c$UU{@(84O$B5>{?Z0}=@7J$1Y}9LAjFS`>yO{~EdB8sD zVAu~J5SR20 zN79%5XgBTX!9c&PoI@LAdfQf)GC#OYSt>LR>QX5~Z}aj$ZXV?<1FsmATOXuLQoQtu zAMQzN_VnrfvS%IF(lTKQ?(&WEP*T!{qiRm}!9=H6#1aJU@&)oo+16J{WNLJmr?)_? zhjLw2a&fV4c)3G#`=ZlylJNOy??kPI1N+b!@KBvX!0XL|1r}$n_VLb$Skcbhl2^O_ z#un#(&Iy)-+Zoa8O5R`vq6!6Y-j4S1ir%rpV#jPn}!A7Q64xz#_m~S-VJQXlLcjfy@%%W8qUsQmc zYOUD)Fg{~^`(>d63%84<;%{Hfu*4pfJW%Zp-MvaME{yUvc<+W6*I zP3!)t-3N^$6tFI41Z8ynh7Sr84da-4X+kjDZR&_X0pV z7CYz)q*`S6yIntddJwyE26`JDcc({4qVs8y!D>O#QVfLeX}1r4VF|B&xFY6QnOgLt zR@C|^#BXJt`ejV~RZ~GX6L@8f%GR?tLURFpES&QDF#N|q9sJb*BxEZC$-;#sCL?%E zROno#h-v=i(Kw&Z*dYKSMqwd+A6M{tKe?4P+=uY6SGEwzy9igbrYhVFzu>FD9~9u^ z`}X4qzAkB_&!V2ctZ$-VXhPrLqiP)_*$ayo;Js^ZIQYs)fHNHjk(3&Di>+?0#l0GH zKGN&RA{~~NihW8jG;L)u3B6~NnY)rwH)T-Q0M=jSNAVZoP>+X0%eop(2z6-+GrJy# zWrWUpnxyv^65zMGs^3YIz7mg%o9lgar>}2f>opDCUp(jc%O}?qR{QSrXlZtY z-ApcuQN=TpB!MM7zy=#Sc9OA^wY7dv=edAOIwz#^yi->2x$OmhUeEUtgk4C+ogX-h zo~$=tA3xXzHIOfwg`yRRNW2EAoA11&ET?24oX-+UD$7ehr6h$xm3*S$BMnBaQRDRn zOp50(pB1^Jalr9w{?bxOAW`Y-!{h})?D|e}B8mD;@O+a#8Q%sF8O?tQErcklI(<=6 zK1AiEppMhIiw5r`jAPD&B)aSBDB6Qz+{a?5?s|231&ID2P&f z@A|g9kKnusm8x#1H^K7*dGL_B8CgF*$u^VG&EY$$h`@OW0V_ANHZ(jZEBz)QJ7i8+ z^+-;7yIVgXF#d+ZhJGi|KBGA&{*18D9-P1eoZh#QeAsCG%1U*R}x=;Hu|d5O{; zsU0|wQ!oQ#+)CwL9BiKiT7&tU>A3jm#Pc~ZFgFk`Ev52@4Oyq(5XabdT_-l^a1$R znEYfME)yCS7Rn}wZQJsl^iA-T?J|Xp{-zrGMjoSbSHN_owmLvAZ@uX2G3Ut zxxTQr++5FU8|CKjo00faa*o|x{yRTx+oY9CF=_?`Ko@fINrKHz%r3tX6GDccE*v?~ zp0;qj&x#}$4~Zmk!ts_*Wf9>e<$?Rd_$*y5*-Yvk@0uLe@g{mbG5!ah#d<9xj2)ZG zBiXv%Xehb_l)zc^^nxL|RUtMrM|5Yx@ldo*W_QcOvt-KDy_YC+fex#9YeGRm?!foS ziQ$STe{}p0k4U`llAbL|%0hzpd7Qq^X^%>Sm6odNHNTQF0gyay#N1ajtmXi%|1zo> z+Fk$-sg~y=`DDuX-M-F(kJx{_ZRxnLYSQhh?zRi_)G`w)PEaNwQ*A!mD*Tg~ zK2ZrgRBXgt);aJOm%!;l=J|j_gus$>L1`B~zcukgB(Yj3l4Tt`;)a>zWWcT`*QA zmr-eL=*nF$XjlZ|8x6956_vDmw!pANg`Fx@sPd-4{>rUtpDN`x3^fg&M7n#T?3nHT zLy7=vu2gfMFk20}<(R&PE!b|>OFP5-rN>PvzQ*hsM=1K$NBLe^2Kd_pU82x7=WQif3U zR)T9w3iB`_z$cTd+wthaiTNzPHY8#5&ejjRh)uwjezf3MeWkk(xp$G@ze&}COJE`m8)K+9JpjK z-Fs~nXH$;fkuuKpTU(5(J-2E(KxQ7-tZM-Fa2bZpj2;(wEF;$)Sat+0eVLnp)r^#B z(&hmqEind)Ms;cgEnT)C_lruot(e;D0JX}u^itxa#}Fe-(th{(#4@hhGD^O$BiW6z zNz++X7_15;sp{1FZLJF6sLa&9&>`O06qJwuvkwL=?ZeWlLASH6%pi#FS zLRmL*1FRP{xvgR9;N#*|SgN!{KFnQfZYO-0y6mbAwz*y56xZR{cWAj$-#OIV+xKhV zePv}G1`tTWDePvZ#dn5*5&-K8sA~n5lJ)Z^=0%wuUnZ;^8%npUD4l+yvAgP7^cJ#% zGmF!@x@89%Mv6l?DUYQkf>UxTc>v~#=&=aJBi(YOI&jc3*#0=Rf|O6aXsJt?L$o^H z;O>vTFU5nGv?zNhtLp)tEUB(-v6cKrV>BdPhf0T=I!l|}cSqHj2}~Cj6~^`H>uWCa zwQMbc&Au*04&5%E{;8wN%%#aNKC7UhD9+>+yyz5d?)%WtFP3^%I#+~NX+O=n|a6D(QG2)P<558#lv0#e6lc#@O|Px24xpyKgrj!&$UaXqOkVMRzi4&-vsS zJt=NoWP=oSSLc-J3@Q#=e~@^ZtNzN?EvwVS=%n$>rLyx2{t~Z7=U=R0hSkH{QI>rf z>#0QNry8Hfp+ZtamoPEywwYlu!NH7reV?v54omVcw=}s$3@6Kfo(Q^0DiHv-M^xm zf49xK$ryP3QD0Wr{Qy3^iGhEqh}`@*v;2=s#1kfOn6XB)d8cs#Z6 zo(B3gPz?t9NGA-nrj<@!u9cQS*Ba?j1R~HSAUK}h7Uu4FrK|knb~aNof&oLR(x_+E z)J8-vAH++_qQ22Q1TZ~B>d%f{ycZ?PbD6%L{z^f`Fpt`}rLG6u%XA93OBy2U&B>WR zXR2hS!qUnrJEuWGCK8%PhpCL`BEd=C0i8x^OR>1Bm^&w&@R)ayryw<_@CoIPQfAK@rdbI zWd|f|Sum@-r`%H(pf@~-7p=zlCd6=FC&Q%Xk{8lArQ7*$qNa3}X$#udBG*VP?S3N0 z;cGDGq`aFcm8-e*G1cBuQqs%mQ`2k@qcy0okiu0LQYw6;C)X|Jq2%ElrZaP$( zV_yA@J1_EAYgnIRfEbOFWm0KbEReb$h#2Yfq~y1P;yN!k|I{+q=H$BUgg4k5qi_TW z%irnd??h|}EtYG~P7K{a(9q1LuKv$X`BzU)c2|2^1e=OKOSw`vjTU6AFppNaC4s^g zeWNk&K_1q$KD7@&@4ecsaLYMHSmx$}V!l=-B4p5`AiuU0W6AQ3#;{pDkimPq^P+AT z^RyiQLF)2T!>`Z>XNjpr$CRJ%Z3dVt6*PKf+~`&(OARSAoVo@=w>?P5 zc%Bt1S7``A*UUyKExJtN?i@itVdV|vq9FNz*IVJ=XuifpcK|F!IyWd=adk8x`^hi= zs;K`~yZ@}!>t({#ad}3%lK%0F58QIghh`^?c+)*s%kn~NMb4vuooG}Mx3XSngbU`o zS7j8o25bE8RV~km0A3ZcNgD8~)|KvecIZI+ES|N@1%-=<~BXFYB1$n)~xPWD_ zw(&M6B0`A@w%aIJ@6vVF+Tn8pjN^P&D^der*6C>+v9TRFnpN75$a0n?dhe$pjPh=0 zpF)-Ds}tlr`Gjkn@B&0>N>xt?ffq<6La)YOYmk|_+B4=T-xVD|%;eM#K^d zWB>zJgFmm%P~+-E>V4Iq4`n#$LY!MFtx^M!!J1kf0q32^01)J;-1qnsudn-Z-`+Xp z5BA{1L@4H)RQURVG>tbL)oMvo+B~aVUV;SSMr165^h(Eu`wr?rb;p)W=n%gs!gssa zqCr(&$0GwEt?)Ry@t05X_;5Dg`~&Gjd}e22Z=!bq7p*6ghqGxK{Ppn(TkfKJTPDxOGzgPx1`sh7DG^pfKklr1nEUM38Y+;LtH~E6&)HHqWpIRM$bFC-B)T`D zNIUq+P~e&kBX?Ha|HIyUKsA}QYs1VqqmBxSbfk<_=^{etjw4l?F@(^OE};iV=-7}B z6M9DhfdmKwh8BuaA{{BAg@AMjp-6Ay_wb%`=6%n9&Uw#SXXbq8TmO2q7K_aa&jZdFsk#8l=rFLmVV3pp%~|qvT)J6BWs|G;VjdmT`?++? z!QZ`-J;&=B$|8XbwS)&F`1x*5YE3sugZagzd}81excfa>VoksGU9^So3WwqSc3rkG zb9=&=E~jYq{b8UGV0Ty3ons?*(khYbRWV?GWSk|T`Hc?cvg;AYL8D`M)Ai&JJ=dof zpXJUpezPwoCar(trRFXFYvyYO2+0YVT5NlYx1r(s#AKWLt^&ZkzaHMK5XuWSf z7j&|G>6Y+Q>j+lB8ep|b(kf;2XNS}{yAKu(Bh0;7Uo9~Qmb~L%l1p~6qtBv*$O@ayMhxj8>o(*~x$fxId8?zGIOD@j+e1O;kgk&sp;3w~Yj&Ao|%d z$7+N|lNm*2L00}CNZE@JnM=`h{$@SD{NbMZ@7&=3Tkg!g&{}?Pz!hzftWjS4QZhyz zIEd@$A=C^yu|*N9n13N6fBwHkL_Tw+=h9F!hvrNB*3l|Lv7_9>LCq;WKpQaMv%0yl z6W5-FEwVjW%<+W@xTreSC?xIG6|CQd+ZBxoE?|aL{EGS2)hU2g${5J9Poa`uraal% zhHXaI-rGm_$m8BckPCD7iJI<|L!o3a3jhSx_d2S~vy@Z_^_2Oq=c7)zB{e%%(lXmt z8du9q){Y7FOMT+jSt)b1R&TZh>oSt)aU3j<3iN6TIfedP6l%sklbxDc+lI!u)`N)f z<+oK=@m&^H4;zy(ldV1dtlHe8M4@Fu%9z20T<&Zmdn1V+ngI`cvv-UakYjHwj@h}>mlN-q<*Hz1zbA$~1>n9cO<1VefihMjs8-JazG8P5nI*+^1{g#{=9P$(?6 zvm($aB-oQZvM>!dUKqHmxu>;_R48zN+3rH*z0BA*Xs-e$-=R2?M&|T?osN!g=_$yw zgH}^(2B|Uq{j>vEe2L3chK;(~SR;3}Wl+X1XNElX1B}f)9lD)#eUzIR!wHeKpfY{D zfiWHE_LF~^XPhHSTO$|jvUyBb-o+HxLp9bhRaHt(qFk9ZnN6OYQqC!(hI%9Df)l<; z)(J|3BIMe9U0YOYF&f_OY`7NYmF`#kq9W{)cElHZv-CDgTzaxZvOgvSeGLi;v4{Er z@r3eZuktFtWJx+5+CH4&yuN79F_eL=d3&-o$p^u=bNjdTUd^&& zCOj;j$2!x|H+pT``fa~*k9YVA*0*mKvs|mHV=GW8pQ-!tj$S3nz%JOI;`aS};^nKtgQIKLM3TTgG!@tx1wQTq1=67 zgcTHNVF^R_iES%nx4tA5G?^Gk@Do2ulwI)gmP4AxDH0qjU-<3Pozq|V0fJ)fWLSbrP9@zwaQqr zP$CRcc9rmzyZFNeH*5nMA3+N^A5p;-CSGpAdLe_cv35JA$$}fj|F%I=u6V01d?zbM z&-^&F<)>(wg!9IhA5}%%&;~M$Y>kn;m0EyfCdkfBuOFp9^&J&+@$toTiqkRc`;)#r zZ^xF*G|!B9yIUw#TQnsWwNFH5?#`<3GS}(Wa=%>iknu;2sG=)Zig}D}{9U|FVumzJ zRu3Q3G2lC%{DD6C?_c_Z57v=D@2si2-)NjQWHccr-e8-g_%0r%$z(R3pb;*Iqo11J_U}2N4RB@k(r|2mqnJ$Vdu%(zMPV6EO3mI;h&`!T? zJ!SQ5hT;o00Yb7ZawXO;SIl7W25^g&rc!{wOC$dD#sM0p&X)~6o|#C@5ctnNfqHs* zKsiIzyTKQ)V@S8mu##+Hzf#b~l+m4p_%ALI8jF(0RgMw|uOBhSp3O?@7=Xom$r4i@ zeB2qWIH5uh3lOu#`4{tYN>15Yib&FvgQd!w-Y@c*d^C8Gmu8civqt!ZPW$it50|?p z+f#vhBV!^TP;W#Fj~K_k3XV7ebC$LoKC!ALEQu2hpxc(!<*JJzy6D8M9>{H=-bU5L z9s$(b%zI_eTLASo>DaOt(_52ki?HQL+B0IK3O)vUz* zQlNG8IlCp?lR=m;G_fY@Hk+RNn!2boshn-DT(?oD z*{l&d#yY?R95wsNG)=*#8R_qG=jE#R?okkz6W7gOdRg&|a*NYYtBWZgI2V{f zNF}kCIFzfct`_gFPN|q1)lS`5wcqY#JC{FlO-bY=0MK?h2Td9CdU31ivieI8A55Zm z$=E5&)h0nT1dH-#W;tB;!tDm%!LcAkP<35PHm+*GXhmj#jrzu_bFnQ;^#wimpyxBu5%k^QklQWAPH1-E8d$!CBG02D3 zq9VUo5O2)9kdXLzOqL;WX*KQWKt<-*E*?4e9)OS|Uw1y?#tKs;<8hSy~t;=2SYRD6M~WPlwS zpaHD4?gDTF@M7q@Fs-ZfO#F6@;{{XeD)Nnt5A@1rSYee@T)7uudf*U%`#Kd{=z^*h zy5}g8m!-PXF?HuL?eI`ucSWTk1J)CVoN$Y)-~Foc%XfjVe;=Sf)NrQ!GJD=bRo|v~ zmde4rR;{C{1=KXdh4ry2Xs~Y*%dwejRgcB49!VJ|$?zMOU8lKp*iGiE4T3dBii;0o zH2HkMvc|2@DSLJANPdbUhvH$=~_J-{E{NW+F3RbkMZZL28k(aVO{vk!*sXg-g^2gUgZuikhGZ zNQQA7%GPic(Z$TD>Xh%|NhEnq&X1MCy#UMU)}O`N2AcB49%Q3vJNFcVM+f8=+RwA@_c>^&+E}e$k{{@6(Fl)nt?FJVI^7qBEH-Sfp@W z-r!RkZ8Yn7;Dip}fyW^{a`WZ`U>r?W@TTBNPT+`Zlt?^CCbLS~xTzN#t{CpzlWdc(r2m|8do+w? z(y0_l4MJ}X-3bL*5_6HYU4U>6cK^x~{6#G7Uix}b3p=cbHBh+eVjj$62&vPi&p0x*rQIW|0-MR`PVUXa#V=J27ljj6J#Y__tj?D@bg zH+_>Xr`=4u){$!gz+T~BS5sFdz1dJs{HU^S=xjPf0rX%QFJ9J9zil!gZl5{aVWXin zcB2F#D$Lr|#C<;iNbtAJPtTlazq@_#h6|L$I4~3VVAO3N&sjWt=8r~4s=#A+|dl-piN-=6d)jne+AIE7irm3G%#g3L= zz$CbVTU!?vkpbF`YleD5TU{zX*P|;7YPWAS40nTm=nWFA5Ek_m`ns}cXjO41`J@Ga zN$^H-@_il$dYlFg2oz*5n{kI~X?MVKJl$sS>-a zV!4=F&3dnq-P}Aj{BKyPcZ%XtEm7ZtRYje# zNT0s_K`#C;jsE+Dqv{R7M6->VI9c?KPP8!k1f>Z(TRj*X=Vlz~FYcB8&Mm(p_f|pt z(8OOmhBwg0BVS@yR+e* z`Zk;IqYtC2;6QouAxdc#y&1E%1ai>L&?>GR`teLfdEHX<_` zCE_%?+I9^-j}{Fp#-5m2FqM{;Qzbq*)&E$ccgsP?iTu(lg+WkV2NfGX3t6}jilk$+~jutfyhXxr!H9GU| zcG9sw`S<4eovZ)u&URDTzUWe1*P@T{pxoQ6TzmJckRglL+7py&3ZJGJNp6>^Ib!-A z4I=9j&T%kebLk!s1KjV{j#y_#7DMX3VyUrKmt52}$^s)QQhTa({G&;NGjXgdcesMITN2mr zrz`&y_D0LrW-T%%t!G9}|9&L)z<#VVLIAE`o8*3cLN z7l~|%^2{4u@T(Kl8$NGbFZmhS8NpkS;63{}E-LavC++QrTBWC}X+cjVTyycJGa8_H z@q~`*klQ#leFdKSiPhRNKvSO&Sp)gWI-1@(zjh-+g|lD5MANevZ~&ukN-{NqaKB_wzQx|?V5HEr&|Bl+ zSQ9=d-YKn6+Up7=8m46G?#PTzj6WG>36nZJ7E3WGXs{7d*cj3$)FnUds1p?}+=%D< z+KIySMWFOqUPz5T+l!RMvvsTcU}{E43RV*8YLR=jA)>p&Z-J%goaMvxkp9)9n~Kqp z)DmpP^awry@;*Zj+fZDQn=7^9i47Xq>*@-XvlQ40*e_{G98Im(b)kk+3|vkeTb}pR ztSe6RtQYDE-OYOsXmPE+U*N}??Gvt9pfIp?r^5%gH|Pi}M3&skG;HJLi&It9Xnp5t zLw(0w4)u88fafv=dE0P~+htX)w6-@B%A&tJvSvb)CdexJ;nvI>Tf%6mmLvn)mMW~X z&yQkYG-Qw%Z422Hh98O6k2E9C1tcJXiBPVCJ)Gw>rKKqlh)5O_*|tm;GzsouJSQsT zydgU7GdaIM7k8ur_-ymhtG4WsfS6VVpD-Nz^zimc02Oj>4$qZ5Z$yz+{*<3s)lR99 zWV<{>^*>L@S3Zh^(n^Tiq>XTff`SNIlOO-)U54&f6Pku3FFE{yVu2A<;jny z@>}IQzew0oaauN%hnx!j9RBL2=e0RaBHzs@%r&x#MXinsX64O7#0XVV?mMn%$& zYptq!^v&x<>(MNJ95^+nN_Iy*Tge--_~}#!V<46T`53)W_={q>wr;-hzNVdo%u@Bw7KDXgB6DmV zRT@%UGRka(D0JK1a-72q6DH;Qi7h>z@)%KiFW3tt}ti7&g2c z>LeWKW1L(5GwRGZ$@DQYuxUk9tgZk@7V0&Gjv;-x{79vNo{Pl_g%yJxZQ3uL@~W$8 zflA#?c1b8eKd61`dsJq^T2>z-2XJ=w@nrgE691Bd%=6uPVno(Zz$uAeU_JE`6R(CjUwtDpt5CB?LIVtxx2vB9 zexq}A;C-FVP!%~QN-1Wvoppzu?S(5S$y*2;wN0gjOw+9NJ1x~8ZRajX;+l{Er+?D| zG00Jh+(_IB7~GC)N~Ke(zVHWo>wuQ55rT@qoV(G`d}d#WVSvz0(KGqxX))r4|~p ziIY>eTItkIUf?ntzk2b{ie7#l_bW`_D!3N?CF$I!u1DW79bTHlW53$PvXfB221ysyVgf;sor{Z$i6M;J-@e-#>?>_=u#COJ4W>-t>;moYZr>XH|HGdPLM)`{z49=%wGH+Xl4L~O2bm+kLpAam z;p+89D=GHmRcLV21b`%87*p(^I{G(kDpjVJy#*@9MuD#m1|`LLXuVL?&ETCt|GX{L z98K%^P16M_o&7#!EVtKwoK^Ad-bH zc9Qd#Fh43vl5<18@K&rvyQ}u>s!wdo2ycSU*fn6beJ#S2XiJJ|<* zI1q2hO~Sy8=x`8!9o=`*mwq3{p@Z3?ZkG7r#SaiM$<#=V+(FapNmunB6I7v#q{6j->pFZGtRoOr z*FcRdBFZW>tN{8Z>Xte*k?*NzprbjmQ_z<;r_3CiorN!`jkto%hbW8=2q~d5ccV-K z2<8%*K5|>enR8*`=j5X(w>WgY&H@01mKNqa9H(6aN*@FfYx5h}Ed7fg3MU5It!a;lIHF9Oa$e$o+jZu5rvPPEqxV;@DN7Lo$wt_t1A%1{+;itPjC+jC`> zCqq`{Ya?)StNTtT0fAZk|0ew&>RDLI4xKpeimrSa4_9=kO?Wt(oq4M}i!hYCWgDRS zaXBSjDXbj1mb0Dr^49Cbnw+aXuuNn07jc~1_O_%&(nD6P7Xs-M)mLrjMvZE^=#mhR zcGuNVmCeTb=QYJ4*A%f{jZnQFkNuwp6sarOYurcskN5k*U^0g9RrSC<9lbMP^u0@u z+h^fOejq|t$ya^P-L0nP#K3uK&vW_J@1yre8)qAYUe_JuS7w=d2jW4~zglK^%BknI2jOjC&e zwT&5-qnWs)q_t-wbB0I5gx#W%jOcWxeHPdbkb8y=P`ACXQh@9nW2=8fTSz15!7*eFxQD zgz0iCUpL&X7aO-<^h|v8_4$u(AI&u;56G%GUJx+=DL21Qk*Tbc(|koIp7j2YcH;l- z>(8e5>FGZz$;giyM{czeel)s!>1(4UzUhpB6H4)^hCm=ERw$D z|7HeW;kLM6=4jI8n^yfiVdSgjAZm^${%ry5Rut1ra+`mfXYT!Y1yI53g!t8qutA05 zZ**E~!OR*N$M_CEL1w2A-YS2ffOzxRZv*P6T#}A2e=^4H6S992SW_dX#F9gA>f|CH zOg3<@?$;y@4*t?=%kSFP(9BA(iAvfpYJb8In1rBc9R^6 zbVDh{P-h`1!f=m?nTc3IQBfN8KoH$kSKC=ng6b>%+f~xOuz`KpO8H~-7UJ9h*>Wg7 zy{ok(+uI_kSg}xk6w~Az8Mo^jz}8z_o4T39)Du(AZ8fVK5@^5VZPs-l^KwzYBfDu6 z8`5}X$mDvVxoZ~N4Tt=KWOA4pUlsO?cmQ#dXIL!~GkoVm1;XIM>m>~%d!9?3Tq@jQ zKas~ruufLV=CziQ}%U1p2D%KKtsyPoD-f(073?`6*8u)gpJes|_^ffoie&j& zS#+saskcEqYi;{b;7X+p9J{&5pPJ3G*uml_$>s)eh^Vz(igB#t7_Wv>XDHVeyyKXe zO3Z_goiq2Yd0(CkyM&jxnX7<};%6~(M9?hD%_-GW4njwgOIeaB9%p1OE6|YCWX}g= zu4;Jev=`d;DcF=mF6ZVWlAwlqS<@D1AH)ARPfgfnd1~U=MJ`anJk54$m5usQX&B@w zc>7v)LP~NMUq{nr$uA(N;aDR$iCnDIbEuP1;DA|+Ez4Iild09$N%ThUwW>=`sf3sq z{(NRQ`@iS{@uzn6AG#SY=lHmij{tt}LXDHtD|n+x0h)u$RiEUQ5-(g;Ad*&F`E)a$ zc(ibfAjjPw*r&X!%m)U+hL*y))%II5Fniz(wyVC_h0H~G^7bi{WV9g=nfYXx*c^HdrmzNhf}NUz z?HjydVF8lWq8Eb%PLtIf%r}Xr$!Z%}Ob=}QS7N&!lg8-s7fY{ut$Q9_dN#58diq1A zDZ;>Vu{lm~t-iWWfb`|c@IYpKrV2xEf81-dpX#2UNNaH-SaD)=*1hlDpL0v|tnwVb z=b6mmvTtAEs?z&-*M!M+|B=n=u+;OYfr4WaR37$89N$^blsGI^BriEIZailgq^=hA zQAKAkD2xBdqH3iAp+-TfO>{arITbm*&dn{1%+Ai1YhwmWv$u~9jg>k>;sFGYPuO}# z<=l;Sk1;)EY7q61np1uLq^obsWsfPH^u}_P+wkL5^po$uX#GC)!IryfAGP_%iP9{+ zUMY5J`XuO?ZMg2{Q0#>cQ}tYo6*e{Uankm14NrI}ZER2}#}Ej?1p%l)eF1}!JyR;G zq?zs!tUq+m%&b>2YExA8Jgod-mO?%t@3A1|n}N_=uTz)B<5M_mo!3|ZT1xMHV5J^k zqc&Fqc2P>!%2i)VX&%b%>hj1j%gVw6Od$p-QL=S9;9nH2h#%#Eliy;~3;(@aft@|N zt{I@I;?V&b6~nJ?ucE~C?1F>jDfbK%l;E>aT;YcG8I}5BCc3$mdEfTDsZh;?s6xJH zK|2u;0-cwn z-NG9~?UM~Zm*ll9hrM;J#MstYK%k;|RME+Zj?E^!89?BTk00VQc4e`m0`EI6e zH&|%_MWU3ApaNd?c+n*F05m99sD{E=m;H^7c(PF0E+IS}_-0F0pw<25LF72)@PvE0 zXo3(zH^L`cD@QIt@K@0^){5NUUe;-TM0@0_o~fd!7J~eel0Ne#<;#e}4nPuJTce{( zjQ)N2{*(sey4G10bDp}lNA5nXaRuh4O#u7hCgjfio3fz7 zB#!Ag*sV&)m6_3ntp_)sSU#cWw8d zdhwQW_Hy%XiI_`F^qY76ZQ8tNe8J!twHdOH1qlpA0W}%`XE*JqB}XYrgqKF3Ell_0 zr)htCbZh`i$3iXGglCezzrnWJV%N~Eqp>slDWf09v!%B?GuSEfWk8fACl@AO-XO`B zDWOyp|uk?Zv{?I*IxXd!OvO zCf=+Gc|vANe1c`lmoND~kb`6Q*$V5?`HMA$UE<^`NulxWqED# zZv@|23u7Au)is8O@yb{509~w%QY*L17|7Om@dNv5ynPz{hM&gUK=2F1+u^6dFA#6L z%|k7Vi4?-Q@&rjHI;nx#M*EuH&9xrz!h zHTZ^4>vxS3Kbj$VFQZrx5+*=u1d~21?)dWUSsrYgeANoek9BCKSlAk{zS?pQEi6hs zWd!{!@e8$@*`bvr?@q7kEO&Lr$cNsdunaCGtUpJC@9sRVS3X)3R5KjmD9lLh1C?J& zp_zDir8N!>Nh@^d-S3+twn52c#Fo{CEIIlQsVTfOoaPcQN*|6)z)8M*4(%~;WJ9l| z9^4lSv+ePUeQ4Dqy6YmK3s#Z~goZG+^gSOy1nV1jiR@;Y17!`!wZel~RsFQ+z%m!l z^1c8P=P(|i7t+*z#SiXAIZK{65INcmWLelmL}>RTI~IT)H*~HXFj+~?I$ZBDsp_in z{`y8-Dsf}bM)!WZyL@#h??^4^+0)KU@);PuV{BN|6S3|KhOz}Ej|mGbR~PW}a`r)0 zz*8RyC~m02h$ywTH2Q~SZXcgM6vNl!+n%ethZprOv35b}Rk*puotT-ozsSkw+6c7+ z0y^PC2G&>R=upy(jQR3@X{TZZJAa%`_ODlj?+RtDQ)ylGS#^HdZ~D#4+N;t9V)Z!~ zf%=#@{ri{}PNf`)B(okCuz^hHWz(?)2H76_7UVKn;_TI!?HdbN8eZSfG}df&vbHqF zk8hoGH}^VjQ&^(0?jX!mH!EKivNGQBUt8U!+hTe@u)9K1OYfkx_w<&-e1! z^1iODyb`lk~P3k#Ad1s-|hcS=sRaTfg z!%K6u*|2Zm>r=f8yGVqMs6v3BP^U)Q4DEBN-pY;>5WYS1sL>fEmpcGZ!kwwJA?XTb z&k<1!cdpE=MA^(}3JUVGu=;l}fuj;lgOSO9R7P?gvierpJ zRlfO?avQs@Dn*a0mrTh7eXRtgdh z2%_v7uHGVuN+-L`$XV0)-Ms5XNyWwfqIWep%L>tx3~ggfC?$I}b>%+UzH$>%pF@jU z8&e&Bki|E;7|Qzn&I)l!9rtlh876c0G>QRgF~p1G@72qY2PdOfN4>gz`{b^_oc5m9 zepIQzxV??DNMg08B`x>J`<1gDm?z0qX*rGjFxOBef^o{NwGq}R#n$Wb3`ns#^Ql9r zW1q(q%0dmt7uDktM$wWfU&?#Su!?z2(TAv7+Io`g48HtXwkx;Sh{^>2NbP|w2h%k! z7eM9rG~I+|RARjHl@954`>(U;9Ot4}wTUYU6wu&u+uP7n5gr+l9UXgPJfk?XxP$S^ zOFT=7Qh``<<&XBR=I`WKH19&Z;9{a;ep}R$pxFqpN}&P^YK-MUN%xkED%3g0AKAMU zvvrIt+3YT6Os6cE#Go7f^A2dPdiR_!ke*~go^O)2tIdC%yn%JLm>M*jj4bs6-&q#a zOG$YHUu|OTY-XyTbgOx}0u5}0^_W?i{RKLhFhH-2W1GH`x%jdNdt=x3$2MlVKNVo` z#wyCJJCmZ=Iioe8dH}qoADl*(Y!5G*?Qyq}VSvooMA|wUhQvq{LzEVapAU#n12so2 zdOrG-wWl>lFM>gyGsAxTh273sFe8b&tZmlwf*Qk=g&6+=ValyLC*m1Fod~_b2-C=n z!)r-tn$K^AUDmX2M(*ON8ABuYhfDP!-{_L~`F0s18M!D={*Cqa%2wqYmWmhIKkE2Er5h z#x18#g8jYB?Fb}!5Dk;xc-e>XXYNZxBMGj;iKXPrggX21Im2U z2j}?DAz)&^gDquBrN5~U6{(BGWLFiyJ24jGgYBmlF6N5>3FQE)lW;f9Sr6XK#?@C6 z6BY^R>Wibxhv^rgx4jc-md@{qxqP*Ok`~p_4Iqxy7er@?`0_Z@?mzZo4}D$)DBV|Ks;LH@|MD>m9FB zV#^3ZsQ~*mT+$Gzz-JD!SJz$FxFxsi1>J>$0d;REqXOnTxR?W*#%EAJH#HIjajeh#mPO8`dD~>R!Tj*>p(hm80icgNiiq;_h55plfP(q>UL2Ud*qZwDI-0-QM4p@RP`l# z6dak`QGsV+QNW4{zp9b?!8)*^W&1Q9zFuv%d;rA5)IBU85Dzcx;W`LOP(R_fVO~F6 z8NA0Wds`gPAdHTclRecS1Q-;62I1#Bj=A<6LcAh*6J&EB#kTJeN2}kG>n-QN2cLBE z`$!W$Mt`GwM8_ujH{18e@?q8HG}kb!wA@XC`aSjU5mT87O78&!?aBFFrcGRXWPwVi z$@H@d(~ccYMv~9Y4m~Q>^|xBZ!xTQruIdRH?=eeEMSydKRHjK;hJ3ZWv~o=xvyp-^ z$?Ne_>OA$vj0K^6ya^3LIVXXv&Q2`&bzU=ps&F^?uQPC0?yq>82n(+*BzdQ(kOO^p zH5V}{j=gU@kv^o->gQB_j%SvN&Mx{CJ40GLDv12`gH*Wx5M<6dR8XFfje+lF2?mlY6jL|*AIJv)pqsk1Sena0*>^=UUARh%u`a9OMd7B)0I(sw#pw+A}+_<@873CeWXCo>;xEnlMhXmvFbv`e}Z zzLVw;6F}^@SQm15*^Lk?Qjh!cf5m>%FuMg9$kgUp>2~nF!w-+2Q;I?wwhx)`WUX~# zm}-LLmg0d*L+0x4dm@O<=c1dtJvTVQ6fr%sjs@(mQYxR5kPrfG^{*Nz|f6^ad?|rl&cct@K zMN)_eG6D}&B3paM-~!W7tz37C3ewUdn+2%NUh+y&e(P}Gcwj!f&_}QNHOmcG?{#;p zhiiemR@$6W1^$}`-zy;D2Q2`lG|DT0spFJVYW}sZ4sKknC1P`;<_fiFNP;dD_ZTj0 z^*$KyTwW?Y8gVSfDmiW}ZK@hjdPJAq0;=-LZ~^?A?Ot6EkE)vMK@JA+Phyg*YaC$$u^Xf zHIP8?qv9Ej4yoIgr4cNNDst{XvsIW?_ePN9$ynCw5S}$0IYR zoK<{~YYl6=a?0_2zC5Bm>{7ZVCq>kuA7t6c%Y&nab{8eT(E(;_5=WwLJAktKdc`~W zbA^vKjBc{#_VQ%$sRTGi*LQKmG{q5sBxFfnp&gR$d(#_#9b_j7b*fQY0_(_FsT0db zR%kQsP5zYcGB`jm$DYE32V;83zD$kMl>2aEn7C0O+mqq!CKlHguu?zokF_kyB26J6 zn>-~ZJoym%6gT4h=5QYD+h8s#R*ao9aV#oA1HLv^7c=XJX8rDV!adOPE?g^KIDgD> zU;pSFS9&pLaPQZNKHJZTDSh#21TU=TKsK=VBM%CfvOvTAx@B8sp3W z@aPn~Ms-_pT0`T@mTOKD@37f!b^0V@r#-#?qO3Ci)eg)7%x=N%5HSc{RFu49xykXGpAlJUJBt;EN^iGa9#ZF0zO{^!%Rn!Hg{8XqahlCvO`fYfRnIw+h zxp9+xbM5Nu>6tN-PkgR~x_LxX5I>qJsQQ%3>?iD$M(1x|Y-pS-L5>jt*mtr7Bw?qg zE1?w9Xh(OA^Zj3kIFH{2MRk-$0w7;S85?A(;SV#l?rkj626g#d5$hSn(1y9 z&x&uhfx`-M$X!kI1OCk3k15JsA3-kmUT7-yVB#%t9{H&m2pBaLCT>Jj3qaMN7BRE0 zGb@7mKMpRic#HcmaKbAX(!#?tNzlM^SOuo!Dbr|N#peS`n+3BD!~>xe!HR{>pi3=#S+N^@1>`(%0MtNn zuJ=Mo*Ue15)pE@S6}*rC>W06Rh-cz_ZJ>3jOM1g7t*~s+G3pK-Pr>G=Kdrm}hi^nu z*eOz$jyIB2FcM4txmf-FH8cCMu5WbRNstVFJ-{Aek>K=F}18K4c~enUJ=( z3w-df!8b48<{RBWcX&}#zuOXSbuKI`<>>1o^Q5yh!}XdTE6=hd2O!lB@4zhc3jSSU4&&?Zum6p#+KFq_FwIX+RJiR<|vaM;M z5n`u;DvcG>#;X(abHkuhK^55;eXVeN6DhQDmy(qG>$k*l9aqu93>-kX;S3t|h6_7S z5)klU=$Jwl@vc)Bv!i_vK0}rAQbbs51*fm?HedJgdnw^2S2V1=UaPoCs4Pz&bk@4$ zyD*FgpuwPi*DYWDb3_KVwrhM3P{Zn)hFbKx^Ur;q7;b{Mt@N+20>UbeU6r}LTSq2P zo~{>z`IIr;U|-D~cUaN^?8U9POKmSbk}ezd8elOAjp;axDiZ-zXwVBiG!XQ6y;qSV zVa36$tHea&QdqhL!GgLl-!beM*iI)W`{eiG{-GN4)wtyuS(UC!aS1L}2CrzG=ggaZ zrEZ|jStzX6m%gPD;I`esfRTON>0mUEgHBj1WKj&f>zmiWg|@E?5kVtxMK#(OxPBy} z+_M=GmPp~L(Pds;!738?tD|>(TqzVpNP>k>YQ2jKwZQ+#u@c~RIeep=_>Y5yeDAI| zqS2jHY2u@MvXZRMHJD|PH)3LUmn$;X&g|=e7wR^=ut0xZH(dkM>i(+Ryg%0k2~{hq z9v4*C76a7E9I&XjWpEJwgjwS-AR^jM7r<75*a^T^f%ySot5U+XGN5;Dvw4&$<~}Qz zU8K(rZAv(i>rIs6^i9aR4~g3XO(v732-7ZAW+heB(~~f#qNsev=}A~ali5`dI0?^% zha-Mbxyr|PJ1o1qyBDac`n`JN_ulKZMRy)jbRzF!fXMl3crynD* zT}D$_HoVJ-V5}PK9std0O@!C$nefC|xt1clG_TZO(SzLf9{L10lOk@(kCILa>1aUu z16%fF%gxxqLWSyKv}mv7cw*HWWEt0Ssrpr=k=&eXu^lQzW*f|TqccZ!?6;cXWxbD1 z&E_oPGy1!xi|#`p^5?Mux2#yZfKAV(yJZMA@#~$+E%D?CO-)q`B8F4?pTU*0$A+3feIpY-w9t#REBe zeTi0p$RD2%XYx+aa?2qkFfZ!U`KaEq`yo@R;Narp@W1^nvseFk>#u$GU+#^FQW<_F z*`5U7XR$4*`$rPP{;A1MA|>y#A7esu5M`Rg;mW8FjVm26*T@z_)3mBNpO~ruz7J+m zYn}>DA`?Xm;E!Vq5gFvFqmAmdB)0dFemMaRlrMslxUa!AeW&}+;LuR-$-ii`60Xc1 zXm;Ls-#YD4`Hc>O3$|KZS~*baSSEJcl!L#~8DLf2XQ?NDPu?~9NMd_1%cLW0MQY5` z@m)UiK)&?QB-YA6Pv&Hqy~H{5gqMLVd|Pi%hW@70v-PZM?%xeQgY*4tgG+db$b=@76Ji;8Z=sIY6d5(M}~QTa2EC>iM`%D zAY(@OxG4_11&C%9ey2NqGhux#E$+)naCqd$6cwR;_@It;%bspJpd6P+U0!|_+HL0w zL=~4qf3Id+S8M<{@_`5Hhh>|Bb(eJtQVVX!^vPl|Sf8w=|9Da#?uXY?w+p{+&9hOP z+T;G!P3Zo&-by#%px!ZJy_U2m<+*EPeIbn4mX~cVWpI3LWM4z@S3EXWjZ*wRssg*$ zj_HgYb}LHxX`nChzzgXmh5xAqRRd`Ny$%JVp2q6CrcG2^4udKik+i1_Oo{cm8D8?@ z0;>QRU4sN<%BT}-wV;lrTE>_*V&9j-xKoj`E0e}Lnuqzd{l;Gw&b92{%Bom3xx}99 zCtsyL2~x}|0r(DRvI-3F%PLqLV2I}syCLIz+qEZvCmK^R?%=jmR6hohfgL7ATRC-o z{*@xT>7L-f98J`8z1=q){AsLH6}*hQd`=|^%BywM$@jNQjPhRxB6&$^@B9C)?*D&e z7X0Ji_{RkJnJyvINEcmw9oX2Yme)PcZo~M=?)cw$(q{4 zx!`u3UMi(pZPj9M^xb)su4-wF{!t_4>k`Ysu#Jl*yqVp9K2j=)Tkl6~`u)1FLfOx@ zP$*|Mn6H_>IY)}cL@p|dc8!;>&A|Eir=NCIktJy<@z}i*+Qx`O zZ77EWYl*tqEDFFC_As_dk3_r64X2kWN=N*-kOn6h-~zUO%QN)U1uTH-#?%P7fQe-o zu&w|uU^H7Mhr+ojyy2vxNXN%nWtX%V-#7ka8?8%JHz8Tu>;}$A;(Fs!`IlSzTJ`%N zLz>C(e}elORisGWxK$?QGRhZfy!YUjD5wl%-#-O4(9xIOxnohi5TjA}WNT7)e#gOg ztaa+2tpFE7QeGiac=gSmMa#w{ShfS$!k2$?1Js-Ur*kz!2B(E6%~$ov|CP}jy~Z&p z^g=BmSF1g9VJ(}PawWV%hsXQ3#Wl+Z3vOpy73{gQr^Pp#leW8R#+NjKFFlw}1xWVJTM&FNlh+ zWt|`v*4R6u*^+`Le69#)?JnA|Jry?x?UffKiEaNDmF%>=dcK=jHTVmo0FW zQ1vy~Zkt{1nFSUOX$W#2tU3?d%h^+j=&Q^hbjy)STaC(KNaKg0*^HJG=CxaQOvGQzEvQ%m_Af6?_a^Fk z@vSnlbjaC;koh~Y%8rg~I-Oj*nN@Li&4KBEAl+4O!}w``LefmV6%YW3#*2+!`xC`%iAM zL#K5lT{dM2$~hT>>@@QL!g9pQYIZLdYHiA~)AE6OY9{N|pjDEt4*(4CT&rF?q`R!{ z_cwj}*IxcJTKDR#cU<5o%I^BQPI#Di3l*46gw?6Zrv?sZL6!5p^mVgJb20bL?3LbV z?f2ud^$6|h#d`+G9s^f{8`5%obu+Ykf3ec8Yg~bxT4~37Hgp13+Gij^Xyx*300MYYK0*ALfU|wrA2KD@B z^IDOtOLkPsy37J)4UNmiw;$@5sz92s)A|bX(BeATGBr)Ug5IfW`|)YTOW!?PH9 zU>EJoIgK9Pj}-eF!FD^u65cO1nD6XP6b7SeRW0;Q{ts>M9o5vf_6y^-ZM%r{;@(sV zO-krxtArxWkR}j72}KAs^y*eO2th!)gr?MxPz)M+QF=!p34{<3>AiQsn|i^qi4R^$5rajrdJ)@bDVPqVCwKK$cGoKs1A zhJFoO6Z7xT9J1yK%dL}IT`KH%P?2>wE|o{rB~SdeW#aSXFm}DHwlrHS>Eiz$_W#9A z{C|0lzsO=sNz-z5z*}3bqxUQmcDgX!<9u-k-=yFDn=`Qc<=5K=d7dOq-2T4(TfI?G z!}jE{WCOT${@-+Fd5VzQl$!&6!F#l{h?Uw5LM<@HgQ?bqXX*PvsiYb}VlfFy%q)d3y7K*1l9sQE4^Jo{d-jpLgl9 zl!`a{;&k6td>aqJUy85ZL`?cw6SWUd7)d+uV~JU^95M>bg6l_FDdNA=*6*R-N57f3wVBQRZUT%y!a1*(S3W7B+(?j+TI$ z%Y$!w!F^DCt`ZT>V>Cd;gT-OR0Q|cNCxesT)Q1zc5gm}A=Qg>f|NIvcC zw#}YvMQ@inS+o#{%rIk_#O;RuMZYSSNCyUz4_fW~1~`hBP9V*-ajE`JU6*HH7qmR_ zWJtXoRQk!rGd0oN-$?#QUkL~s(npnlZPmYf_mbp7(RY(HRyhzyF>}5?d-|2w_z-8C zhHm8pJw(sA>Vma~xl<)>_4Py)Bw>s3x#7#AJiDH=yZHS@(iVNNSu18oIsc-nQv(b0{>Qca`M|h@JgZ0xD%4?{;8A9Vp452=~x-0UP z)syxr{+r#DC$F9DYP-_+lDK(X1iLE}1?vCw|2zq?DW;M?T0LE*K&V3=!;n@DLD68@ z?iPymki$&RG?X#~9_mC`fCaAWQbQ8Dw$VJ4mA~DV&r<|~F2yt~8IN{5_-Z+5B!kPp zNZH#F{8;p1d`KyRsFfDq>0b-}S^h$-6M~B1Yijo2p`k*5xif|wr9AAP0 zv)C`JRhe~N=kdaaEX5|C-M*gt&o@kRua8d04=7g*TM0t11|yt+qA{@AoZW&SvD5!t z?*C|=Z>p)m4uinn)$sdOOUh5SKRz_< zSou_dEpw7paUV5G5n8?LV8E*93G zBWo^>x8C=IUC6h#k>RU5efcdaQE1BpFngbS2W=As)uq=}@B7a*w4T5H(RS!gVo!Eh zNj$wRM7u`rKqEPTV2#J?ht#B2H#&{b=+q>i z41>7DaEOohSgWq}u`p(O)tl?CgO-iQtXAz+X@%nlFZ3u(N3``PpAze_aZ%Hqe#Ub` z1Lwr&pg1EFGmyy@L1`20uOhBsQhf}|^icOlxE~l0ojh(r`!h>Y^tNVc zfYqYTV2;m)ci2>wRJz3m1D)Mcv3%7z+h^dvtg_LR@Nyod;Gm! zDK8Rq%(S4rSmhIh8u!f+ols{M(%w}3&>EdPn{kJD}Ea%i)6jXIS zjaUJRg&4MqNjcf|w9NEAif+j)`nLW~;A@yTjxQh^43=V1l8EDbERS{a-yZ9%V&H}K zN^3X&NG`$MEGfpR673*4Y`FL+My}mCYg1h#4Ikaa4 zS4v0NBLLz@!kfEE)1>A2m;@Da4@LwxTRM-g$70X3B8JoFdY4zbend2Xswz{KzwZhs zjM5nI@RsV>EcI9NnMP>q2Q<#MV6yd4YmQ%k0#exQd6>n_D< z)T??f7t1F-x{N(jyNFN|TsdbYY_R6`*eX};@`j=h%M4Q)&vyCTa26dB*h?%0F}$oC z+qo>EC8gxR*!RTCfR3!#CAd-)b9qCyH>fO>-syLF|8!xSYU9;!0x~{rRTbZpxU6KP zme7P0iB3vW3$t(1POXowc?D$q^y)Vr8q!hwQg0ovM~^^VeZ|_V)q0OKsT&ub7zS0_ zavXJ94j1&ttjtoDca*2o{_G|6GY^kr? z{7Z=UZ#thM`U+-jTZp7k173w`)ISrvl66zpZ^u2Ri!MN2iAnd;I7}a%R{Ac-Xc{H# z&EC13B3K^wvDhE(q0Wymb*LOVQ~e1NLUKjO@=`_ z7xGi|rLuN*Sr4#dhiC7Zs-ZAqwAw~*$x41sa$NJLEfxDL_$m=v0-dGFU4u7p3)ik% z5@$H6Q8U`8JojvXbKKhNdN|f|EUlZIxiJTW9Ir>r4qnZC*L7L62N5OHAI&=`e+?=`L8tezNyF6EWTqKsrmi4UkI)oXD#G<#HTF$f&8JuAxISsUhNYww(}d zq4673WjDQ~p>iQuWDBy@nzdeNMdLzYbNZ#dNw(>32U2PC>@%~~44nD)%f~Lrq;Kv( zV$&OQOZy=54eqYR{R!E%HLEZDS;xbnRsM88y1!DTDaltV#>-tUTEE8Ddx!L@&+HwK4tLc3$O4mx|y(^=L>-i*I4-po-_S#4!wG=zKNQn zC>N5bv(k4CixxbOQ$}Y$56j2Wm#*DVi~nO-xV;8wA3soyoStMdx~2wT1=H1|rTdmM z(aW4%qg4Qbq&-v8M^YTfo6}}oSt_2By(bt(s9mm)U=GMp`lgpl4-;l?bGvv%md7y>;Ctn9co_a$ zhTf>ZTG41JobtKUhN9Q`U>daRu={n%dv@o35z~L#&(b1q%aN~{YeYWOC1;hHk46XB zWM;@=`ILXMG4?h7SgDcr7#H|Kuv=iy$uBzdZ5t_3%H{aDAM=0rCF?eq$mCWJ8WQag~ zm=GV}xnCBf24l5a?mQ{5TZ)OuDTPL4p{ezh?M*F&Jt&zls~5f8QDWx$wZd5CDdp7z zxI(2POiGr9tohV{b}KE(bWk`*?->BbqN>&EeW8iVb;%5m8q95L|7mTTsbeM7r5HWl z${}md(1M%;=aRw~ss)9ec@;4c7eTcKiT=B2_WHlqgS7DGu{8C9M2I4Rhu7( z#XdOfw2N`@eu4@}wxn%gR=(ZWL)p9uz4Hwz^|)0<^9cemhl^eeZ}FMWM6WsBb;_Us9!?#jU-u zbWOn@c44Fb*0`V-qaf+yGf+J;oW0dF@=4+q{1gAw`F(!DD-K^T5C?mF8znE* zUXO+RWRcft`_FD!sT=viu5z@Eymt+B_$y7Ot2?}=9Rvn^9FX}Gwh9QqrqvE}k zm6-NPm-c>fk(1guLBQrfX9r8EFQ3*7YcB=ng7myjh}u3Q#3&b!v*1DM$H2Ba~MRoJ!tR=P4QNhuJUP zMq9S62j&F8GVRn&l9Ai4uY-u0Es?dS{AXgFzPL3;J4n_BIu>^R&Ls^&&w;~`oQNyaSgck+Jkt-yrfd(|8yyL^l@^OsKapPi!TL@a}+Vn1> z|K*2s(na|_#wK?St)Kd8DMcD~lBMk-@N#d}V}_ zHj?2PdMxU|H?jdD@Z!zibFz!XA{4{1vC~mf!q&UGOw(r%TE&DHEQ4C}!<`&<$J)9- zXFO$2Psgq>Mo)_lIo2wesYrZLGrJ$Py0gDH~?LAI72Fbv|n5}UCi@`f-eTSx(85hblZo6a_!_!esk9}8Vt-UR*Mw-pvcKw zU3me*J~(nH*&Gx}tPEd;6NjGF*r{=oIU#Af4i%2yT*sSkKH8EcUC~kA9o z>zaX0VD8Ole=oP(N<7=F$aE*!MgHiEg~34ZZvM;z*e4bynpuIr+5qxWU`=1ic`m{MG+uV84Y zK`I`F8*YrL0~d7dN~j2z-EgZG-*$g|8HgA7(ko*yOHN2+w<)MoRzHW#bu)&RrP(UQ zx?39!sy+q|9_X1xS1ZC4+&p+N4{cXw{77XT8fy~A8 zeeJlS%M@*{4#mzo?5ff{id58{%qg9G;*0YG{`TqOi}-dmFo&#0Xc%qG2!&`)f7^M)~K#RTsOH z5Irv|>^k{l+y@_O6PRaid^Rm*`!7=hdtInD*yk6_0x6-%ZRxLJXmgW&)aQLaTp&jz& zN0vITVCBhgwusu5)Jt^0##ND8b1NCYc|kD30-Lt*fOp3xVmub$zR*mD5?6?-|x&`C)141Jj%YV*ERdGJm9ye zO;LASRLP?40m{s^uzb(-z~oO%=|mD`U#Qc<>BaM;>Bn2gKeHNACTQobUl~@ z#Np4a7`2dJ>v|J21J_d3!*futvtNxd&->5M>JQ&QKV>3IOj_Vn1CR(S=tJWPX`U0$%%u(6Nc7gJ%88QtA(qk=51Erc?Am@U-w{GBL+VMWqdxj)1&>y4d_7ALRJu3{P~%i zfHuY=s(e7k*k|YBDreND6s{Gckr+>yaaoOKxnY>=#Sb~+FtrjG;x#&+6`&K=w618u zMi(H40#smf9LiRNDH3np6bGAhKLWBV?;`yFO}gbj9BT6xxix}mKFjo~5XPeu$7@4DU`FEkKw0L^7mT7=#rth`qS4!>nepU;JC0K$_KK zR$R^C$;n(m&QI(5%AA`Y2L2t3UYQ_iXwVu*C;B;lZ{MH&$(F{`Fc%{agcO!l_mtOW z2lH$2@`px{@iDr)*BL=F-9+WbvpqY*6+@K4ClBgz7cV6K3}rT4c|-yg;IijD0)pnH>L)N%m3j zbzj)9thi^*)eZF;huxqCiM5lD6W>P0-U$)Io2|ak3tI84{E~i(9Z5w#mC)$tODLkS z-C+OxUz5f&{_m@-W7Vm(}Pz=2nb8chwWH6gnX0sm*&KuH46et5UCgXy%!mmjbcD1n2-G5+`f|PMzrQ>) zMC;doOtKP+2Z9M1h8L>|ZMsw_D({<5f?6pEG|3S=gr%uu(cJ8hB#rtCFb+#%T+i8c8KOMC^(U zclGxl8VHak#P`#%Zfc2MHD^bi8v+R9NPIg>kW<>d;+y$tV4B;o&tg_a(b~kZ2k-!G zZB=P=zGqja-g3tF^s}$iu-(A2zqTJn1X-+u9Q=$YU57skw|jqn`$9$RexUlrpd>xw zKxkG2;GwdUL7$_z<-&a~Wxl_#wVb{IF7ce9IyhL+_Pz$-!ck7eMkHpK&ruIYs&h8< zF2u%hK+IR`7aMLf)VEe(_MgzlMx$OkpcrSMQ^u%$Cj)W0qSy$e|9b6a?<}A@wu61HJ7--k!u1xM@Ni*?Gk4msd%_YI0V_?+p(yapI82*PS@r{Wm9{mO81*Ly>l&+2 zkyQ)Nsg>(YYKpr2x6^DAbwyB{w=)Zjg#j*)5hU=FaHVNOPl3>`bG zT4r(Hi*K!JXnx`8J0WCCpr)V&Yl2IV8}bg&0xU3o6>U{hTkk>;_QTz`RJ)QI7+vtg zLC}V);)`dq@`LVPTfWrQ8f`Pdt3KL2h9(g$- z$^GGphL`d}j4Gky<&u2Z9giDizX^xY;03v!42|?dV0TYflNYUgAgq*Uk0SY|<;$bFBzh!mWFv+>Aegc6D;>q*Hpi#dGuWoUbqzO+KC*SLE9 z7w2+I8IlSgsdohtp*^GwfnlGayw?xv@>ZWmrLjBOc-~euR}#sf;u4M zuILpsl2Fts77XiSgx#Lh&*g}+*_@$r>CznGDH}qD4sK$cIZhAFK~Hm{BeK%?jWo^6 z)09o#4lB!^S=NP_47+`%rD`WJ#jIA#D({B2_^y){CzOXQ>=(H`E_xAdSlP{oxtKy_ zPa)rLUC3uCdxh50$sQqKiaPEQcd^~_E>R3^T_YzpQ?bwqed)7RtXb31BldL255K8i z#s;@2V(1>yUF%tbWme+{IXOaCf!+tiJi7l;rOT7D7wD=W?NMAYYI7JmM7CVu#7<8%QJ^*yrds-()(6gR zrE(O%0~J@Dt6v9e=O2!UXLD{er-kxQE{3WvCjRcu zWAV5MKiP7J!LR9mt^uKCpT-AK^RsDZC=rrE%7Q8#@Op1WpI#e@? z2=Lf^hg@9dI#k4RC#I7npQ~3-to1iNP{S>$?JN}Z#I!&rFT6y6xYCQR*oAZa^r0%r;;8bx*v$}Je#mB;q58vsM(uk1z21|lUoCuOb8maQ&^ROAgZVi$kA!R3;B(_*8fn1t;5HPW-Lr>V*wK&C;OWoY2{t*O|AM;f%2*ZVU~vJ(HWyb`M;#oPG?jb6(K)W ze6g=L@()442Y|mjpx!^qXjgl!%e3X6!-9?~h~Ut=^t|?!;R3lnm&VM|&)aOYY8kvM zseis~$bsBfN~&@v-p43i7X`#0e>%a9D`KDvpfv2>GH^0VL)cXAB(ww z9TDdi?w?(3b;9`YMKw8Pj@_W`M4R_rOtFdEcVG<(-E##q zAXJg>nJdq&O<5$;z73AV+;Eij$;_(RuY$313u=Ro91TXOXila_Utzpm3ZdWChte@^ zof@G}yuo_WSY(*k{!&!G8Lj4dF5vMaMSeN=MC!;~!lR%?oP}h@a9gbb)sS6f(gtZ* z8|(+8n^@-_tIzl$7k;vxQx@QG#Me$pLsO+%LrnxA{SYwt5=$jG-m0dJ`s|X`2+N-p z2JxI zp@V6>xA@c&?gE4X?b05)As)I=>x?LteVscN+Ys!W2n}RUwR_(Ur473!o|ugjY=FN*CRJB zS49InV?=H&M%~qc$(Y$HC6Gy4B|fi%6yi&vCK-`Mz1OT@><|Z&0W)pI%^{cQd=0VN zb`^u=IAcYQ>`PBvztRx0U%Vm9Ivo16fKMY+VXvDw`7;cRmI5 zOUqk}?NauN%@TyfJI~-Fi2|g0_Kijd&?H89`R|IqUf`3Z>e=ksx@U?Nf>+aB-z==< z72Z+MIV+tsa_=V_+Olfp*y*Ncwew_g6j)Qxyi?O;0w;eWG}O?2&AOk3v;s~YWPZ3f ztO2~1WEoTrnNWmqHM_W>sVrZ3Q~`m2aciYEwII~~S$!F|>=O)iuGGX_QuNg3Y~`#t znsMZ*QpP5%=`O;E7~Pr4n4@a!jPCS5_L#)#NaQ-T608MCeGPoeuCVe-VYOdi8(xzl z@-7HucDhQab$a%IP_jt~9liwi_Yev8d2S!e))r*fI$V9Hz9MVmuX%04=+d`*lz8DH zk{a@KTG!@$TdYgvN1QB!tbEl;uO0tUPDf^fbtyz``o}@;0_p6Q9aZJMXesx-pbK1l zBhsIYpraP-esFCNyuBs5M#^#qP5=OeH-V;E^7X^A>XM0kBZWTP8V;|nH((tPpE~*W zk>WeD7|3l**!@4|)4_on@w}GPwF^tP?25smMR?p?*gMjF#N`byBJXAM23<@Wt+K(r zBf~xHX!G$mQ!7(5ZSu5LTGD^Tk67aQN zB%#7`+g}|)3@Le2X}5wcRC&os!-FboL20GXwUCc;L8WVqj}Tv&b)xU|AEW-QcgAXT zOGf5ym*;YQE9QOe?6Tm#dla7UoZ}j;FB)h4wlwCoWu#ra+Mxqf*W~Lm3#~0Foi;fb z@7Ue*kbVnABo9!>zT0D4vn~dy^pOCC+T1nDBtJS>fPlqDzC#>{mGs0=#2-^<`Yd3! zQt0`4hpL)_oY8s7>@yxHfoVh;pZ}n|vNz<@L?I}`Q|Q+(Z|)lXbtg2Xn^Q^1A-v-7 z*P{L3r|T|!rmXp+5gra4BO3oes{QB99~;{lu_8HS;qRf7ESusi*})r>)KbWshIPub z{!< z?j;Y;`pa+%${J4+Uy~?(MToFR$vvZIU8I#3>tppdq{gxr73ol6ez%&6HLv_n3}>d6 zwQEmdVH6><++a_{k}{DBgx>Exuu3--Ui)B?nY6Z&C3MSXE*E14c&%0DQP1zfqzit`g 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 Py>4;fZ*xHD6Z!uEa&VN9 literal 0 HcmV?d00001 diff --git a/docs/source/_static/static_build_process_create.jpg b/docs/source/_static/static_build_process_create.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5618b8ffb7613ec316a5c0e69a8ebb67668da009 GIT binary patch literal 376024 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

    5EsmBoWKn$=BN!z9)}=SGB=x^3Ml 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 z�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%0A&hAuAXoneBuQ6JC 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%0DHpMtk5#LM<^7l!EWC@INgIRLUJRiS|CX+UEYS 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

    `1wq;uHU2P38QJC$c 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/static_build_process_install.jpg b/docs/source/_static/static_build_process_install.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b47e9d1b91ab647b8ce66e27e5ad7296f13b8021 GIT binary patch literal 179985 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

    B3~DM{urgYuQy=sz==>kUxO{P7>4?Hd`( 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 AFaQ7m literal 0 HcmV?d00001 diff --git a/docs/source/_static/static_build_process_symlink.jpg b/docs/source/_static/static_build_process_symlink.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3cf8ba2e8ed746a4482566512ceb9db2a7924aa4 GIT binary patch literal 278662 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 T&2Jjm&jjVM;N| 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 literal 0 HcmV?d00001 diff --git a/docs/source/admin_guide/index.md b/docs/source/admin_guide/index.md new file mode 100644 index 000000000..5d633e851 --- /dev/null +++ b/docs/source/admin_guide/index.md @@ -0,0 +1,7 @@ +# Administrator Guide + +```{toctree} +:maxdepth: 2 + +moderation.md +``` diff --git a/docs/source/admin_guide/moderation.md b/docs/source/admin_guide/moderation.md new file mode 100644 index 000000000..2eb450807 --- /dev/null +++ b/docs/source/admin_guide/moderation.md @@ -0,0 +1,59 @@ +# Content Moderation + +## First-time Deposit Moderation + +When a user creates their first draft deposit, an email message is sent automatically to the moderation email address (currently `hello@hcommons.org`). This message includes a link to the draft deposit. A second email is sent when the user first publishes a work. Currently the works are not held in any moderation queue, but they may be checked manually by the moderators. + +## Handling Inappropriate Content + +### Removing Records + +Individual published records can be removed via the "Records" tab of the admin interface (Under "Records & files" in the left-hand menu). At the right end of the row containing the record, click the "Delete record" button. + +This is a soft-delete, meaning that the record is not entirely removed from KCWorks. Deleted records will no longer appear in search results. If one views the record's detail page directly (via the record's DOI), the user will see a tombstone page that includes the record's title, authors, and a message including a reason for the record's removal from KCWorks. + +Records that have been soft-deleted in this way are still accessible to administrators via the "Records" tab of the admin interface. Simply select the "Deleted" button at the top of the "Records" tab to view and search through the deleted records. + +```{important} Always choose "Public" in the record deletion modal +In the record deletion modal interface, select "Public" so that the tombstone page is visible to all users. If "Hidden" is selected, the tombstone page will not show up and the DOI will resolve to a 404 error. Even in the case of spam deposits, we should always select "Public" so that the tombstone page is visible when the record is accessed directly via the DOI. +``` + +#### Removed records and DataCite + +When a record with a DOI is removed, its registration with DataCite cannot be removed. By default, DataCite will continue to resolve the DOI to a tombstone page, even though the record is no longer available on KCWorks, and the DataCite metadata will still be visible. But the record's DataCite state is updated from "findable" to "registered", meaning that the record is no longer findable on DataCite. + +### Restoring Removed Records + +If a record has been soft-deleted, it can be restored from the "Records" tab of the admin interface. Click the "Deleted" button at the top of the "Records" admin page and either search or browse to find the record. Then click the "Restore record" button near the right end of the row containing the record. + +### Blocking and Deactivating Users + +In general, user accounts are never deleted from KCWorks. Instead their accounts and access are frozen by either "blocking" or "deactivating" the user. + +- **Deactivating** a user prevents them from creating new content (works, communities, etc.) or participate in any activities like commenting on collection submissions, moderating collections, etc. They also lose access to any access-restricted content to which they might have previously been granted access: restricted collections, restricted records, etc.Deactivated users *can* still log in, allowing them time to appeal the deactivation. +- **Blocking** a user does everything that deactivating a user does, but it also removes the user's content from KCWorks and blocks them from logging in. Each of their published works is soft-deleted and removed from search results. If the work's page is accessed directly (e.g., via the work's DOI), the user will see a tombstone page that includes the work's title, authors, and a message that the uploader has been blocked. + +#### How do I block or deactivate a user? + +Users can be blocked or deactivated from multiple places in the admin interface. + +- From the "Users" tab of the admin interface (Under "Users" in the left-hand menu). At the right end of the row containing the user, click the "Block" button to block the user. To deactivate the user, click the cog icon and select "Deactivate" from the dropdown menu. +- From the "Records" tab of the admin interface (Under "Records & files" in the left-hand menu). At the right end of the row containing the record, click on the cog icon and select "Block" or "Deactivate". + +#### Restoring a blocked or deactivated user + +If a user has been blocked or deactivated, they can be reactivated from the "Users" tab of the admin interface. To restore a blocked user: + +1. Click the "Blocked" button at the top of the "Users" admin page. +2. Search or browse the list of users to find the user you want to restore. +3. Click the "Restore" button near the right end of the row containing the user. + +To restore a deactivated user: + +1. Click the "Inactive" button at the top of the "Users" admin page. +2. Search or browse the list of users to find the user you want to reactivate. +3. Click the cog icon at the right end of the row containing the user and select "Activate" from the dropdown menu. + +```{danger} +Restoring a blocked user will only restore their works if they are restored within the grace period for deleted records. After that time, the user may be restored access and permissions, but their works will have been permanently deleted. +``` diff --git a/docs/source/changelog.md b/docs/source/changelog.md index 757a7d578..ad7011b03 100644 --- a/docs/source/changelog.md +++ b/docs/source/changelog.md @@ -1,4 +1,3 @@ - @@ -6,8 +5,38 @@ ## Not yet released +## 0.4.0-beta12 (2025-03-14) + +- Per-field editing permissions for collections, along with UI for managing them. + - Before publishing to a collection or adding a work to a collection: + - Alerts users when a collection has editing restrictions for some fields. + - Alerts users when a collection will restrict removal of a work from the collection once it is published. + - Confirms the user's acceptance of the collection's editing restrictions before publishing or submitting a request. + - After publishing or submitting a request: + - Displays appropriate reminders to users with the appropriate permissions to manage the collection. + - Displays error messages if the user attempts to edit restricted fields on the upload form. + - Displays a warning if the user attempts to remove a work from a collection that has restricted work removal. +- Bug fixes + - Fixed a bug where an ORCID id was not accepted if it was formatted as a URL. These will not be accepted by the upload form. + - Style fixes for some upload form widgets. +- Stability + - Major refactoring of the upload form error handling and error messages. This includes more reliable integration of client-side validation with server-side validation. + - Major refactoring of the detail page to make state management more robust and maintainable. + - Project reorganization to move main project files (pyproject.toml, etc.) to the root directory. - Documentation + - Restructured the documentation for better navigation. + - Added documentation for content moderation for admins. - Added documentation of known issues. + - Added documentation of the new per-field editing permissions for collections. + - Added more developer documentation, including updated installation instructions for python3.12 and uv. + - Added sphinx-copybutton to make it easier to copy code blocks from the documentation. +- Build + - Updated to use python3.12 and node 20. + - Updated the build system to use uv for dependency management. + - Added a mypy type-checking step to the test suite. + - Added a step to build the documentation and compile the translations to the test suite. +- Testing + - Added the beginnings of a jest test suite for frontend code and added it to the test suite run on Github Actions. ## 0.3.8-beta11 (2025-03-14) diff --git a/docs/source/conf.py b/docs/source/conf.py index 7dca93275..3f45806b1 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -14,7 +14,7 @@ # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration -extensions = ["myst_parser", "sphinx.ext.autosectionlabel"] +extensions = ["myst_parser", "sphinx_copybutton", "sphinx.ext.autosectionlabel"] templates_path = ["_templates"] exclude_patterns = [] @@ -27,4 +27,16 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output html_theme = "furo" +# html_theme = "pydata_sphinx_theme" +# html_theme = "sphinx_rtd_theme" html_static_path = ["_static"] +html_theme_options = { + # "show_nav_level": 2, + # "navbar_center": ["navbar-nav"], +} +# html_sidebars = { +# "**": [ +# "sidebar-nav-bs", +# "sidebar-ethical-ads", +# ] +# } diff --git a/docs/source/configuration.md b/docs/source/configuration.md deleted file mode 100644 index c880984e2..000000000 --- a/docs/source/configuration.md +++ /dev/null @@ -1 +0,0 @@ -# Configuration of InvenioRDM diff --git a/docs/source/customizations.md b/docs/source/customizations.md index 141b10f87..ffa74c544 100644 --- a/docs/source/customizations.md +++ b/docs/source/customizations.md @@ -1,5 +1,7 @@ # Customizations to InvenioRDM +The Knowledge Commons Works is built as an instance of InvenioRDM. The InvenioRDM Documentation, including customization and development information, can be found at https://inveniordm.docs.cern.ch/. + ## Template Customizations ### Page templates @@ -17,13 +19,13 @@ Additional email templates are added for KCWorks-specific email types. ### Modular Framework (invenio-modular-detail-page) -### Overrides in the KCWorks Package (kcworks/site) +### Detail Page Overrides in the KCWorks Package (knowledge-commons-works/site) ## Deposit Form Customizations ### Modular Framework (invenio-modular-deposit-form) -### Overrides in the KCWorks Package (kcworks/site) +### Deposit Form Overrides in the KCWorks Package (knowledge-commons-works/site) ## Collections @@ -33,9 +35,28 @@ Additional email templates are added for KCWorks-specific email types. ### Per-field editing permissions -KCWorks adds the ability to set per-field editing permissions for record owners. This is implemented by a custom service component (``kcworks.services.records.components.PerFieldPermissionsComponent`) that runs during record modification and selectively blocks edits to certain fields. Attempts to edit restricted fields will raise a ValidationError with a message indicating that the field is restricted. +KCWorks adds the ability to set per-field editing permissions for record owners. This is implemented by two custom service components: +- `kcworks.services.records.components.PerFieldPermissionsComponent` that runs when record metadata is modified by the RDMRecordService and selectively blocks edits to certain fields. Attempts to edit restricted fields will result in a validation error message being added to the result's list of errors. The field value will not be changed, although other fields may be updated successfully. +- `kcworks.services.records.record_communities.CommunityChangePermissionsComponent` that runs when a record's communities are changed by the RecordCommunitiesService and prevents unauthorized changes to a record's default community. (It cannot presently block other changes to the record's communities. Communities other than the default community may be freely added and removed.) + +The PerFieldPermissionsComponent runs during the RDMRecordService's `update_draft` record operation. It only takes effect if the record has already been published and has a default community. The component looks at which fields have been modified from the last published version of the record and checks to see whether the current user has permission to edit the field in question. If not, it adds a message to the result's list of errors that looks like this: + +```json +{ + "field": "custom_fields.kcr:commons_domain", + "messages": ["You do not have permission to edit this field because the record is included in the sample_community community. Please contact the community owner or manager for assistance."] +} +``` -The component runs during the `update_draft`, `publish`, `new_version`, and `delete_record` record operations. It looks at which fields have been modified from the previous version of the record (the draft if the record is not yet published, or the published record if it is published) and checks to see if the current user has permission to edit the field in question. If not, it raises a ValidationError with a message indicating that the field is restricted. +The CommunityChangePermissionsComponent runs during the RecordCommunitiesService's `remove` and `set_default` record operations. It too only takes effect if the record has already been published. The component checks whether the current user has permission to change the record's default community. The result if the user does not have permission varies depending on the operation: +- `remove`: the community is not removed from the record, and a message is added to the result's list of errors that looks like this: +```json +{ + "field": "parent.communities.default", + "messages": ["You do not have permission to edit this field because the record is included in the sample_community community. Please contact the community owner or manager for assistance."] +} +``` +- `set_default`: the default community is not changed, and a `invenio_communities.errors.SetDefaultCommunityError` is raised. #### Per-field permissions configuration @@ -44,15 +65,21 @@ The permissions are configured in the `invenio.cfg` file using the `RDM_RECORDS_ ```python RDM_RECORDS_PERMISSIONS_PER_FIELD = { "default": { - "policy": { - "custom_fields.kcr:commons_domain": "community_moderators", - }, + "policy": [ "custom_fields.kcr:commons_domain" ], + "default_editors": [Administration, SystemProcess], "notify_on_change": False, "grace_period": None, }, "sample_community": { "policy": { - "custom_fields.kcr:commons_domain": "community_moderators", + "parent.communities.default": ["manager", "owner"], + }, + "notify_on_change": True, + "grace_period": "1 day", + }, + "sample_community_2": { + "policy": { + "custom_fields.kcr:commons_domain": [CommunityManagers, CommunityCurators, CommunityOwners], }, "notify_on_change": True, "grace_period": "1 day", @@ -62,25 +89,32 @@ RDM_RECORDS_PERMISSIONS_PER_FIELD = { The `default` key is used to configure the permissions for all records that do not have a specific community configuration. Other keys are the URL slugs for specific communities and are used to configure the permissions for records in specific communities. These community-specific configurations are optional but take precedence over the default configuration. If no community-specific configuration is found, the default configuration will be used. If no default configuration is found, per-field permissions will only be applied to records published to a community that has a community-specific configuration. -This configuration would be for a community with the URL slug `sample_community`. The `kcr:commons_domain` field is being restricted to moderators for this community. - -#### Defining the permissions +The keys for each community or default configuration dictionary are: +| Key | Type | Required | Description | +|-----|------|----------|-------------| +| `policy` | list[str] or dict[str, list[str]] or dict[str, list[Generator]] | Yes | A list of field names to restrict, a dictionary mapping field names to lists of community role levels, or a dictionary mapping field names to lists of invenio_records_permissions.generators.Generator objects | +| `default_editors` | list[str] or list[Generator] | No | A list of community role levels (one or more of `owner`, `manager`, `curator`, `reader`) or invenio_records_permissions.generators.Generator objects. This list will define the users who can edit fields if no field-specific list is provided (i.e., if the `policy` is a simple list of field names). Default is [Administration, SystemProcess] for the "default" configuration, and ["owner", "manager", "curator"] for community-specific configurations. | +| `notify_on_change` | bool | No | A boolean indicating whether to notify the record owners when the community's per-field permissions are changed | +| `grace_period` | str | No | A string indicating the grace period for the community's per-field permissions | -The values for each key in the `RDM_RECORDS_PERMISSIONS_PER_FIELD` config variable can take one of two forms: +The configuration above would: +- restrict any non-administrative user from editing the `custom_fields.kcr:commons_domain` field for any record that does not have a primary community with its own editing restrictions. The only users able to edit the field will be the ones defined by the either the Administration or SystemProcess generator, +- restrict anyone (including record owners) from editing the `parent.communities.default` field for a record whose primary community is `sample_community`. Only users with the "manager" or "owner" role in `sample_community` will be able to edit this field. +- restrict anyone (including record owners) from editing the `custom_fields.kcr:commons_domain` field for a record whose primary community is `sample_community_2`. Only users with the "manager", "owner", or "curator" role in `sample_community_2` will be able to edit this field. Owners of records in `sample_community_2` will be notified when the community's per-field permissions are changed, and they will have a grace period of 1 day to update their records before the new permissions are enforced. -1. a permission policy object or -2. a dictionary mapping field names to a list of community role levels (one or more of `owner`, `manager`, `curator`, `admin`, `reader`). +```{note} +The policy for `sample_community_2` affects the same field as the policy for `default`, but since `sample_community_2` has a community-specific configuration, it will take precedence. This means more the `sample_community_2` managers, owners, and curators can edit this field for their collection's records, where otherwise that field could only be edited by KCWorks administrators. +``` -If a dictionary is provided, this will be used to generate a permission policy object with the following structure: +#### Defining the permissions -```python -from invenio_access.permissions import Permission, ActionNeed, ParameterizedActionNeed -update_restricted_field_permission = Permission(ParameterizedActionNeed('update-restricted-field', field_name='custom_fields.kcr:commons_domain')) +The values for each key in the `RDM_RECORDS_PERMISSIONS_PER_FIELD` config variable can take one of three forms: -update_restricted_field_permission.allows(my_identity) -``` +1. a list of field names (strings) to restrict. In this case, all of the listed fields will be editable only by users with the "manager", "owner", or "curator" role in the community. +2. a dictionary mapping field names to lists of community role levels (one or more of `owner`, `manager`, `curator`, `admin`, `reader`). In this case, the community roles required to make edits can be specified individually for each field. +3. a dictionary mapping field names to lists of invenio_records_permissions.generators.Generator objects. In this case, different permissions can again be specified for each field. But the requirements can be more complex than simple community roles. For more details on available generators, or how to define custom generators, see the [invenio-records-permissions documentation](https://inveniordm.docs.cern.ch/reference/permissions/generators/) as well as the `generators.py` files in a number of the InvenioRDM packages. -with policy +In order to restrict changes to the community's default community, the `parent.communities.default` field must be included in the list of fields to restrict. #### Enabling per-field permissions @@ -104,11 +138,13 @@ So if a record is included in the `romantic_literature` community, and that comm If the `romantic_literature` community's per-field permissions restrict changing the `parent.communities.default` field, then the record owner will not be able to remove the record from the `romantic_literature` community or change the default community for the record. The record can only be removed from the community, or its default community changed to another community, by an `owner`, `manager`, or `curator` of the `romantic_literature` community. -> [!Note] -> If a community has per-field permission restrictions configured, this will be displayed in the user interface when the record owner submits it to the community. +```{note} +If a community has per-field permission restrictions configured, this will be displayed in the user interface when the record owner submits it to the community. +``` -> [!Note] -> A one-time notification to all record owners if/when the community's per-field permissions are changed. Depending on collection policy, record owners may be allowed a grace period to update their records before the permissions are enforced. +```{note} +A one-time notification to all record owners if/when the community's per-field permissions are changed. Depending on collection policy, record owners may be allowed a grace period to update their records before the permissions are enforced. +``` ## Notifications @@ -144,8 +180,9 @@ RECORD_IMPORTER_COMMUNITIES = { This configuration would be for a community with the URL slug `sample_community`. The `email_subject_register` value sets the subject line for the email notification sent to the record owners. The `email_template_register` value sets the template to use for the email notification. The template must be located in the `templates/security/email` directory of the KCWorks instance directory. -> [!Note] -> These notifications will *only* be sent for records imported using the streamlined import API. They will *not* be sent for records imported using the old importer API. +```{note} +These notifications will *only* be sent for records imported using the streamlined import API. They will *not* be sent for records imported using the old importer API. +``` ## Integrations with KC @@ -213,8 +250,9 @@ Note that the KC username of a creator or contributor may be stored in the `pers Users are also strongly encouraged to include an ORCID identifier in the `person_or_org.identifiers` array with the scheme `orcid`. -> [!Note] -> The KC username is the primary link between a KCWorks record and a KC user. If you want a work to be associated with a KC user, you must include the KC username in creator or contributor object. +```{note} +The KC username is the primary link between a KCWorks record and a KC user. If you want a work to be associated with a KC user, you must include the KC username in creator or contributor object. +``` Example: ```json @@ -478,8 +516,9 @@ Type: `Array[string]` This field stores a list of user-defined tags for the KCWorks record. Unlike the `metadata.subjects` field, these tags are not constrained by any controlled vocabulary. Items should be free-form strings that describe the KCWorks record in a way that is not covered by the `metadata.subjects` field. -> [!Note] -> The `kcr:user_defined_tags` field is intended to supplement the `metadata.subjects` field, not as the primary means of describing the KCWorks record's subject matter. Assigning proper `metadata.subjects` entries allows for much more effective search and discovery of the KCWorks record. +```{note} +The `kcr:user_defined_tags` field is intended to supplement the `metadata.subjects` field, not as the primary means of describing the KCWorks record's subject matter. Assigning proper `metadata.subjects` entries allows for much more effective search and discovery of the KCWorks record. +``` Example: ```json @@ -492,8 +531,9 @@ Example: This field is used to store the persistent identifier for the KCWorks record in the KC central search index. -> [!Warning] -> This field is automatically generated by the `invenio-remote-api-provisioner` service when a KCWorks record is published. It *must not* be set by the user. +```{warning} +This field is automatically generated by the `invenio-remote-api-provisioner` service when a KCWorks record is published. It *must not* be set by the user. +``` #### kcr:commons_search_updated (system field) @@ -501,8 +541,9 @@ Type: `string` (ISO 8601 datetime string) This field stores the date and time when the KCWorks record was last updated in the KC central search index. -> [!Warning] -> This field is automatically generated by the `invenio-remote-api-provisioner` service when a KCWorks record is published. It *must not* be set by the user. +```{warning} +This field is automatically generated by the `invenio-remote-api-provisioner` service when a KCWorks record is published. It *must not* be set by the user. +``` ### HC Legacy Custom Fields diff --git a/docs/source/developing.md b/docs/source/developing.md index ca725f587..e69de29bb 100644 --- a/docs/source/developing.md +++ b/docs/source/developing.md @@ -1,317 +0,0 @@ -# Developing KCWorks - -## Version Numbering - -KCWorks uses semantic versioning (https://semver.org/). When a new release is made, the version number should be incremented in the following files: - -- `README.md` -- `docs/source/README.md` -- `docs/source/conf.py` -- `site/pyproject.toml` -- `site/kcworks/__init__.py` - -While in beta, the version number should be followed by a numbered `-beta` suffix: e.g., `0.3.3-beta6`. This suffix should be updated continuously (without starting over again for minor releases) until version 1.0.0 is reached and KCWorks leaves beta. - -Bug fixes and other changes that do not introduce new features (including changes to documentation, build processes, etc.) should be considered `patch` releases. - -New features should be considered `minor` releases. - -## Version Control - -### Git Branching Strategy - -KCWorks employs a modified version of the Gitlab Flow branching strategy for version control. The repository has four persistent branches: - -- `main` is the default branch and is the reference point for active development. It will usually not be ready for production deployment. -- `staging` is the branch that is deployed to the staging server. It is created from the `main` branch when changes are ready to be tested. No commits should be made directly to the `staging` branch except to merge changes from `main`. -- `production` is the branch that is deployed to the development server. It is created from the `staging` branch when changes are ready to be deployed to the production server. No commits should be made directly to the `production` branch except to merge changes from `staging`. -- `gh_pages` is the branch that is used to generate the static documentation site for KCWorks on Github Pages. This branch is automatically updated from the `main` branch. - -#### Daily Development Workflow - -When a developer needs to make changes to the codebase, they should create a new temporary working branch from the `main` branch. This branch should be named descriptively, such as `feature/new-feature` or `fix/fix-issue`. Work in progress should be committed to this working branch until the developer is ready to merge the changes into the `main` branch. - -Changes should be merged back into `main` as often as possible, and the temporary branches deleted. These merges should be performed when a developer is ready to deploy the changes to the staging server for testing. This should generally be done *after* the appropriate tests have been written and are passing. Merges should also represent a single completed change (feature or fix). Developers should, though, think in terms of small, incremental changes and merge often. - -Merging to `main` should be done via pull request, and the merge only accepted if the newly added tests are present and passing. This ensures that the `main` branch is always in a deployable state and ready for incoming merges by other developers. Merges should be performed using the squash merge strategy (the equivalent of `git merge --squash `). This combines all of the incoming changes into a single commit, making the commit history cleaner and easier to read. - -No commits should be made directly to the `staging` or `production` branches. All changes should be made to the `main` branch and then merged into `staging` and `production` via pull requests. This is especially important because changes pushed to `staging` and `production` branches will automatically trigger rebuilding of the stanging or production containers and the deployment of the updated containers to the respective servers. - -### Commit strategy - -Developers should make frequent commits to their working branch. These may be as small and granular as the developer wishes since many incremental commits allow easy rollback to specific points in the development history. Such commits should be given descriptive names and commit messages that would allow quick identification of the changes. These commits will be squashed into a single commit when merged into `main`. - -Commits to the `main` branch should each represent a single completed change (feature or fix). We try to avoid `wip` commits in order to keep the commit history readable. So all of the changes for a single feature or fix should be squashed into a single commit when merged from a temporary working branch into `main`. - -Commits to the `main` branch should be named with the `feature` or `fix` prefix and one or more labels for the aspect of the codebase that the changes address. For example, `feature(upload-form): add a new upload form` or `fix(record-page): fix the problem with the record page`. In general, maintenance changes should be considered `fix` commits unless they are part of a larger feature or add new functionality. - -### Tagging Releases - -Whenever the KCWorks version number changes, that commit should be tagged with the new version number. This can be done by running the following command: - -```shell -git tag -a -m "Release " -``` -We do not create branches for each numbered release. - -### Git Submodules - -KCWorks uses git submodules to manage dependencies. The submodules are located in the `site/kcworks/dependencies` folder. The submodules are cloned from the upstream repositories when the KCWorks instance is first created. They are updated from the upstream repositories when the KCWorks instance is updated. - -Note that in some cases there are inter-dependencies between these submodules. For example, the `invenio-record-importer-kcworks` submodule has its own dependency on the `invenio-group-collections-kcworks` submodule. When cloning the KCWorks repository, you **should not use the `--recurse-submodules` option** because this will clone redundant copies of these inter-dependent submodules. Instead, you should clone the KCWorks repository and then initialize the submodules in a separate step with `git submodule update --init`. Likewise, when updating the KCWorks submodules, you should use the `git submodule update --remote` command **without the `--recursive` option**. - - -## Development Standards - -### Upstream InvenioRDM standards - -KCWorks is built on top of InvenioRDM, which has a number of standards for coding style and practices. These standards are documented at https://inveniordm.readthedocs.io/en/latest/development/best-practices. KCWorks developers should follow these standards to ensure that code can be contributed back to the wider InvenioRDM project where desirable. - -### Code Style - -#### Python - -Python code should be formatted using the `black` formatter. - -#### JavaScript - -JavaScript code should be formatted using the `prettier` formatter. Indentation should be 2 spaces. - -#### CSS - -CSS code should be formatted using the `prettier` formatter. Indentation should be 4 spaces. - -### Accessibility - -KCWorks should conform to WCAG 2.1 AA standards for web accessibility as well as to the InvenioRDM accessibility guidelines: https://inveniordm.docs.cern.ch/develop/best-practices/accessibility/. - -### UI/UX - -KCWorks UI elements should adhere to the InvenioRDM UI/UX guidelines: https://inveniordm.docs.cern.ch/develop/best-practices/ui/. - -#### CSS and Theming - -KCWorks uses a custom theme layer built on top of the InvenioRDM default theme, which employs the Semantic UI library (https://semantic-ui.com/) and its standard implementation in React (https://react.semantic-ui.com/). Development should follow the InvenioRDM theming guidelines: https://inveniordm.docs.cern.ch/develop/best-practices/theming/. - -#### React components - -KCWorks uses React as much as possible for the UI layer, wherever possible using the `semantic-ui-react` library to implement Semantic UI components. - -Generally we follow the InvenioRDM React component guidelines: https://inveniordm.docs.cern.ch/develop/best-practices/react/. Note, however, some points at which we diverge from the InvenioRDM guidelines (although not from the practice of some InvenioRDM developers): - -- **DO** always prefer functional components over class components. -- **DO** employ React hooks (e.g., `useState`, `useEffect`, etc.) instead of class lifecycle methods. - -Whatever the relative merits of class components, they are now deprecated in React and should not be used in KCWorks. - -The InvenioRDM project also tends to use small React components embedded in static HTML generated by Jinja2 templates. This practice should be avoided in KCWorks. Instead, KCWorks should work towards implementing a true React-based UI layer that is used for all UI elements. - -Where possible, however, KCWorks should employ built-in InvenioRDM UI components, overriding them where necessary using the `react-overridable` library as described here: https://inveniordm.docs.cern.ch/develop/howtos/override_components/. - -## Updating the running KCWorks instance with development changes - -### Changes to html template files - -Changes to html template files will be visible immediately in the running Knowledge Commons Works instance. You simply need to refresh the page in your browser. - -If you add a new template file (including overriding an existing template file), you will need to collect the new file into the central templates folder and restart the uwsgi processes. This can be done by running the following command inside the `web-ui` container: - -```shell -invenio collect -v -uwsgi --reload /tmp/uwsgi_ui.pid -``` -Then refresh your browser. - -### Changes to invenio.cfg - -Changes to the invenio.cfg file will only take effect after the instance uwsgi processes are restarted. This can be done by running the following command inside the `web-ui` container: -```shell -uwsgi --reload /tmp/uwsgi_ui.pid -``` -Or you can restart the docker-compose project, which will also restart the uwsgi processes. - -### Changes to theme (CSS) and javascript files - -#### The basic build process (slow) - -Invenio employs a build process for css and javascript files. Changes to these files will not be visible in the running Knowledge Commons Works instance until the build process is run. This can be done by running the following command inside the `web-ui` container: - -```shell -bash ./scripts/build-assets.sh -``` - -#### Rebuilding changed files on the fly (fast but limited) - -The problem is that this build process takes a long time to run, especially in the containers. For most tasks, you can instead run the following command to watch for changes to the files and automatically rebuild them: - -```shell -invenio webpack run start -``` - -The file watching will continue until you stop it with CTRL-C. It will continue to occupy the terminal window where you started it. This means that you can see it respond and begin integrating changed files when it finds them. You can also see there any error or warning output from the build process--very helpful for debugging. - -> [!Note] -> The watch command will only pick up changes to files that already existed during the last Webpack build. If you add -> - a new javascript file -> - a new css (less) file -> - a new node.js package requirement -> then you need to again run the basic (slow) build script to include it in the build process. -> After that you can run `invenio webpack run start` again to pick up changes on the fly. - -### Adding new node.js packages to be included - -Normally, the node.js packages to be included in a project are listed in that project's package.json file. In the case of InvenioRDM, the package.json file is created dynamically by InvenioRDM each time the build process runs. So you cannot directly modify the package.json file in your instance folder. Instead, you must add the package to the package.json file in the InvenioRDM module that requires it. Unless you are creating a new stand-alone extension, this will mean adding the package to the `webpack.py` file in the `knowledge-commons-works/sites/kcworks` folder. - -There you will find a `WebpackThemeBundle` object that defines your bundle of js and style files along with their dependencies. If I wanted to add the `geopattern` package to the project, I would add it to the `dependencies` dictionary in the `WebpackThemeBundle` object like this: - -```python - -theme = WebpackThemeBundle( - __name__, - "assets", - default="semantic-ui", - themes={ - "semantic-ui": dict( - entry={ - "custom_pdf_viewer_js": "./js/invenio_custom_pdf_viewer" - "/pdfjs.js", - }, - dependencies={ - "geopattern": "^1.2.3", - }, - aliases={ - /* ... */ - }, - ), - }, -) -``` - -If you add a new node.js package to the project, you will then need to run the build script inside the `web-ui` container to install it: - -```shell -bash ./scripts/build-assets.sh -``` - -### Changes to static files - -Changes to static files like images will require running the collect command to copy them to the central static folder. This can be done by running the following command inside the `web-ui` container: - -```shell -invenio collect -v -``` - -You will then need to restart the uwsgi processes or restart the docker-compose project as described above. - -### Changes to python code in the `site` folder - -Changes to python code in the `site` folder should (like changes to template files) take effect immediately in the running Knowledge Commons Works instance, provided that the `build-assets.sh` script has been run since the last updated image was built. You simply need to refresh the page in your browser. - -#### Adding new entry points - -Sometimes you will need to add new entry points to inform the Flask application about additional code you have provided. This is done via the `setup.py` file in the `site` folder. Once you have added the entry point declaration, you will need to re-install the `kcworks` package in the `kcworks-ui`, `kcworks-api`, and `kcworks-worker` container. This can be done by running the following command inside the each container: - -```shell -cd /opt/invenio/src/site -pip install -e . -uwsgi --reload /tmp/uwsgi_ui.pid -``` - -If you have added js, css, or static files along with the entry point code, you will also need to run the collect and webpack build commands as described above and restart the docker-compose project. - -Note that entry point changes may be overridden if you pull a more recent version of the kcworks docker image and restart the docker-compose project. Ultimately the entry point changes will have to be added to a new version of the kcworks docker image. - -### Changes to external python modules (including Invenio modules) - -Changes to other python modules (including Invenio modules) will require rebuilding the main kcworks container. Additions to the python requirements should be added to the `Pipfile` in the kcworks folder and committed to the Github repository. You should then request that the kcworks container be rebuilt with the additions. - -In the meantime, required python packages can be installed directly in the `kcworks-ui`, `kcworks-api`, and `kcworks-worker` containers. Enter each container and then install the required package pip (not pipenv): - -```shell -pip install -``` - -## Updating an Instance with Upstream Changes - -If changes have been made to the upstream Knowledge Commons Works repository and the kcworks container, you will need to update your local instance to reflect those changes. This process involves pulling the changes from the upstream repository, pulling the latest version of the kcworks docker image, restarting the docker-compose project with recreated containers, and rebuilding the asset files. - -1. First, from the root knowledge-commons-works folder, pull the changes from the upstream git repository: - -```shell -git pull origin main -``` - -2. Then pull the latest version of the kcworks docker image: - -```shell -docker pull monotasker/kcworks:latest -``` - -3. Next, restart the docker-compose project with recreated containers: - -```shell -docker-compose --file docker-compose.yml stop -docker-compose --file docker-compose.yml up -d --build --force-recreate -``` - -4. Clean up leftover containers and images: - -```shell -docker system prune -a -``` - -> [!Caution] -> Make sure that you run this `prune` command *while the containers are running.* If you run it while the containers are stopped, you will delete the containers and images that you need to run the application, as well as volumes with stored data. - -6. Rebuild the asset files with the following command: - -```shell -docker exec -it kcworks-ui bash -bash ./scripts/build-assets.sh -``` - -7. Then refresh your browser to see the changes. - -## Running automated tests - -Automated tests (unit tests and integration tests) are run every time a commit is pushed to the knowledge-commons-works Github repo. You can (and should) also run the test suite locally. - -There are currently three distinct sets of tests that have to be run separately: -(a) python tests run using invenio's fixtures, -(b) javascript tests run separately using jest, -(c) Ghost Inspector tests that run on the deployed site (staging or production). - -### Python tests - -The python test suite includes (a) unit tests for back end code, (b) tests of ui views and api requests run with a client fixture. To run the unit tests and view/request tests, navigate to the root `knowledge-commons-works/site` folder and run -```console -bash run_tests.sh -``` -Note that you will need to have your local docker service running for these tests to work, since they use the `docker-services-cli` tool to start the required services. - -> [!Note] -> Ensure that you have stopped the docker-compose project for your local development instance before running the tests! Otherwise, you will get conflicts with the services that are started by the tests. - -### Javascript tests - -Pytest does not directly test custom javascript files or React components. In order to test these, navigate to the root knowledge-commons-works folder and run -```console -npm run test -``` -These tests are run using the jest test runner, configured in the packages.json file in the root knowledge-commons-works folder. - -Note that these tests run using a local npm configuration in the knowledge-commons-works folder. Any packages that are normally available to InvenioRDM must be added to the local package.json configuration and will be installed in the local node_modules folder. Since this folder is not included in GIT version control, before you run the javascript tests you must ensure the required packages are installed locally by running -```console -npm install -``` - -### Ghost Inspector tests - -The Ghost Inspector tests are run on the deployed site (staging or production). They run on a regular schedule and are used to ensure that the site is working as expected. - -> [!Note] -> At present, Ghost Inspector tests are not run automatically when a pull request is merged into the `staging` or `production` branches. This should be implemented in the future once deployment to the respective servers is fully automated. - -## Contributing back to InvenioRDM - -Where possible, KCWorks developers should try to contribute improvements back to InvenioRDM. The InvenioRDM guidelines for commits, pull requests, and reviews are here: https://inveniordm.docs.cern.ch/develop/best-practices/commits/. \ No newline at end of file diff --git a/docs/source/architecture.md b/docs/source/developing/architecture.md similarity index 55% rename from docs/source/architecture.md rename to docs/source/developing/architecture.md index a3847fa5a..62c147b47 100644 --- a/docs/source/architecture.md +++ b/docs/source/developing/architecture.md @@ -351,6 +351,16 @@ Note that the order of the components in the list is important, since the compon ### API-level Record Objects +#### `PersistentIdentifier` (`invenio_records.api.PersistentIdentifier`) + +An object representing a persistent identifier for a record. It has the following properties: + +- `pid_value`: The value of the persistent identifier. +- `pid_type`: The type of the persistent identifier. +- `status`: The status of the persistent identifier. +- `obj_type`: The type of the object the persistent identifier is for. +- `object_uuid`: The UUID of the database object the persistent identifier is for. + #### `RDMDraft` (`invenio_rdm_records.records.api.RDMDraft`) The `RDMDraft` object is a subclass of the `Record` object (defined in `invenio_records.api.Record`) and includes all of the submitted metadata values, along with the keys: @@ -460,384 +470,458 @@ And the following methods (among others, including standard `dict` methods) - 'undelete', - 'validate', -### Service-level Response Objects - -## How Tos: Creating and Modifying Records - -### Creating and Modifying Records in General - -All InvenioRDM record services inherit the same core methods from the `RecordService` class. In the examples below, the `service` variable represents an instance of a record service. The `identity` variable represents an identity object. - -#### Update a record - -Note that this will not work for deposit records, since they are not directly editable. The RDMRecordService `update` method will raise a `NotImplementedError` error. Those records must be updated via a draft. Other record services, though, allow direct updates. - -```python -record = service.read(id_=pid, identity=identity)._record -record.update(metadata) - -# the refresh is required because the access system field takes precedence -# over the record's data in 'record.commit()' -record.access.refresh_from_dict(record["access"]) -record.commit() -db.session.commit() -service.indexer.index(record) -``` - -#### Delete a record - -Note that this will not work for deposit records, since they are not directly deletable. The RDMRecordService `delete` method will raise a `NotImplementedError` error. Those records must be deleted via a draft. Other record services, though, allow direct deletions. - -```python -deleted_record = service.delete(id_=pid, identity=identity) -``` - - - -### Reading Deposit Records (RDMRecordService) - -Note that, unlike most record service retrieval methods, the `read` method does not use the search index. It retrieves the record from the database directly with a SQLAlchemy query. This means, though, that it will not always include the latest data from the search index, and that updated information present in a `read` result may not yet be present in the search index. +##### Creating an RDMDraft object -```python -from invenio_rdm_records.proxies import current_rdm_records_service - -one_record = current_rdm_records_service.read(identity, id) -all_records = current_rdm_records_service.read_all() -multiple_records = current_rdm_records_service.read_many(identity, ids) -``` - -### Creating and Modifying a Deposit Record (RDMRecordService) - -#### The InvenioRDM Record Life Cycle - -InvenioRDM uses a "draft-first" approach to record creation and modification. Records are created as drafts and the published in a separate step. Published records cannot be modified directly. Instead, a new draft must be created, updated with new metadata, and then published again. - -No revision history is kept for drafts or for edits to published records. Only a record's latest draft is kept, and only its latest published state is preserved. In order to preserve a history of changes, you must create new record *versions*. When a new *version* is created, the previous version's published state is preserved. A new draft is created that can be published without affecting the previous version. This new version can, in turn, be edited and re-published any number of times without any preserved history. When desired, a new permanently preserved state for the record can by frozen by creating yet another new version. - -While a record is in draft state, it can be hard deleted with no preserved record. Once a draft has been published, it can generally only be soft deleted. The record is no longer available or discoverable via the search index, but a tombstone placeholder is preserved. This provides a record that can be presented if, for example, someone tries to access a deleted record's DOI link. - -The life cycle of records for a single work can be represented in a diagram like this: - -RDMRecord Life Cycle - -The solid arrows represent methods of the `RDMRecordService` class. The beige rectangles represent preserved versions of the record, recoverable record states in its revision history. - -#### Gotchas with the RDMRecordService - -Note that InvenioRDM only ever allows one draft to be associated with a record. There is no editing history for drafts. So draft updates are "destructive" in the sense that the previous state of the draft is lost. If you need to keep a history of changes, you must create published versions of the record. - -#### Create a draft of a new record +The `RDMDraft` object can be created by calling the `create` method on the `RDMDraft` class. This method takes a dictionary of data to be used to create the record and returns an `RDMDraft` object. ```python -from invenio_rdm_records.proxies import current_rdm_records_service -draft = current_rdm_records_service.create(identity=identity, data=data) +draft = RDMDraft.create({ + "metadata": { + "title": "My Title", + "description": "My Description" + } +}) ``` -#### Hard delete a draft - -```python -from invenio_rdm_records.proxies import current_rdm_records_service - -current_rdm_records_service.delete_draft(id_=pid, identity=identity) -``` -No tombstone is created for a hard deleted draft. It cannot be recovered once deleted. +#### `RDMRecord` (`invenio_rdm_records.records.api.RDMRecord`) -#### Update an unpublished draft +The `RDMRecord` object is a subclass of the `Record` object (defined in `invenio_records.api.Record`). -```python -from invenio_rdm_records.proxies import current_rdm_records_service -draft_data = current_rdm_records_service.read_draft(id_=pid, identity=identity).data.copy() -# update the metadata... -edited_draft = current_rdm_records_service.update_draft(id_=pid, identity=identity, data=metadata) -``` +The `RDMRecord` object has the following metadata properties that are available as dot properties and by key. -#### Update a published record via a new draft +- `access` +- `custom_fields` +- `deletion_status` +- `errors` +- `files` +- `id` +- `media_files` +- `metadata` +- `pids` + +One additional key, `$schema`, is not available as a dot property. It provides the name of the schema used to validate the RDMRecord instance prior to publication. The actual schema object is stored in the `schema` property. + +The object also has the following properties that are not part of the metadata and cannot be accessed by key: + +- `bucket`: The bucket object used to store files for the RDMRecord instance +- `bucket_id`: The ID for the bucket used to store files for the RDMRecord instance +- `created`: The date and time the RDMRecord instance was created +- 'dumper': The dumper class for serializing RDMRecord instances to JSON (e.g., for search indexing) +- 'enable_jsonref': Whether to enable JSON references ???? +- 'format_checker': The format checker for the RDMRecord class +- 'index': The OpenSearch index for the RDMRecord class +- `is_deleted`: Whether the RDMRecord instance has been deleted +- `is_draft`: Whether the RDMRecord instance is a draft +- `is_published`: Whether the RDMRecord instance has been published +- `media_bucket_id`: The ID for the bucket used to store media files for the RDMRecord instance +- 'model': The SQLAlchemy model instance providing the ORM object for the RDMRecord instance +- 'model_cls': The SQLAlchemy model class providing the ORM for the RDMRecord class +- 'next_latest_published_record_by_parent': The next latest published record (published version) that shares the same parent record +- `parent`: The parent record for the RDMRecord instance +- 'pid': The PIDs for the RDMRecord instance. This is a `PersistentIdentifier` object with a `pid_value` property which is shared by all versions of the record (both draft and published). It also has an `object_uuid` property which is the unique UUID for the database record behind this version of the record. +- 'relations': The ORM relations for the RDMRecord instance +- 'revisions': The revisions for the RDMRecord instance +- 'schema': The schema used to validate the RDMRecord instance prior to publication +- 'revision_id': The revision ID for the RDMRecord instance +- 'stats': The stats for the RDMRecord instance +- 'status': The status of the RDMRecord instance ("draft", "published", "deleted", etc.) +- `tombstone` +- 'updated': The updated date for the RDMRecord instance +- 'validator': The validator for the RDMRecord class +- 'versions': The versions for the RDMRecord instance +- 'versions_model_cls': The SQLAlchemy model class providing the ORM for the versions record + +The `RDMRecord` class also has methods for operating on RDMRecord instance objects. These include: + +- 'create', +- 'get_latest_by_parent', +- 'get_latest_published_by_parent', +- 'get_record', +- 'get_records', +- 'get_records_by_parent', -```python -from invenio_rdm_records.proxies import current_rdm_records_service - -# create a draft of the published record -draft_of_published = current_rdm_records_service.edit(id_=pid, identity=identity) -# update the draft -updated_draft = current_rdm_records_service.update_draft(id_=pid, identity=identity, data=metadata) -# publish the draft -published_record = current_rdm_records_service.publish(id_=pid, identity=identity) -``` +The `RDMRecord` object also has methods that perform actions on the record. These include: -#### Create a new version of a published record +- 'clear', +- 'clear_none', +- 'commit', +- 'copy', +- 'delete', +- 'dumps', +- 'has_draft', +- 'loads', +- 'parent', +- 'parent_record_cls', +- 'patch', +- 'pop', +- 'popitem', +- 'publish', +- 'register', +- 'replace_refs', +- 'revert', +- 'send_signals', +- 'setdefault', +- 'undelete', +- 'update', +- 'validate', -```python -from invenio_rdm_records.proxies import current_rdm_records_service +Since the `RDMRecord` object can present values as if it were a dictionary, it also has the following methods: +- 'keys' +- 'items' +- 'values', +- 'fromkeys', +- 'get', + +#### `RDMParent` (`invenio_rdm_records.records.api.RDMParent`) + +The `RDMParent` object is the parent record for an `RDMRecord` instance. It is a subclass of the `Record` object (defined in `invenio_records.api.Record`). Note that parent records never exist without a child record. They do not represent any particular record state, but rather are used to link records together. + +The `RDMParent` object has the following properties containing record metadata that appears in the `parent` field of an `RDMRecord` or `RDMDraft` instance: + +| Property | Accessible by key | Description | +|----------|-------------| +| `access` | Yes | Access control settings. The value is a `ParentRecordAccess` object with `grants`, `links`, `owned_by`, `owner`, and `settings` properties (among others). | +| `communities` | Yes | Associated communities. The value is a `invenio_communities.records.records.systemfields.communities.manager.CommunitiesRelationManager` object with `ids`, `default`, and `entries` properties. (No values are accessible by key.) | +| `created` | No | Creation timestamp | +| `id` | Yes | Record identifier | +| `metadata` | No | Record metadata | +| `pids` | Yes | Public-facing persistent identifiers, including the primary DOI | +| `updated` | No | Last updated timestamp | + +The object instance also has the key `$schema` which is not accessible as a dot property. It provides the name of the schema used to validate the RDMRecord instance prior to publication. The actual schema object is stored in the `schema` property. + +The `RDMParent` object also has the following properties that are not part of the metadata and are not included in the `parent` field of an `RDMRecord` or `RDMDraft` instance: + +| `dumper` | Serialization dumper | +| `format_checker` | Format validation checker | +| `is_deleted` | Deletion status flag | +| `is_verified` | Verification status flag | +| `model` | Database model instance | +| `model_cls` | Database model class | +| `permission_flags` | Permission settings | +| `pid` | Internal persistent identifier, a UUID for the parent record. | +| `review` | Review information | +| `revisions` | Revision history | +| `schema` | JSON schema | +| `validator` | Validation handler | + +The `RDMParent` object also has the following methods: + +| Property | Description | +|----------|-------------| +| `clear` | Method to clear record data | +| `clear_none` | Method to clear None values | +| `commit` | Method to commit changes | +| `copy` | Method to copy record | +| `create` | Method to create record | +| `delete` | Method to delete record | +| `dumps` | Method to serialize record | +| `enable_jsonref` | JSON reference flag | +| `fromkeys` | Dictionary method | +| `get` | Dictionary get method | +| `get_record` | Method to retrieve record | +| `get_records` | Method to retrieve multiple records | +| `items` | Dictionary items method | +| `keys` | Dictionary keys method | +| `loads` | Method to deserialize record | +| `patch` | Method to patch record | +| `pop` | Dictionary pop method | +| `popitem` | Dictionary popitem method | +| `replace_refs` | Method to replace references | +| `revert` | Method to revert changes | +| `revision_id` | Revision identifier | +| `send_signals` | Method to send signals | +| `setdefault` | Dictionary setdefault method | +| `undelete` | Method to undelete record | +| `update` | Method to update record | +| `validate` | Method to validate record | +| `values` | Dictionary values method | + +#### `Community` (`invenio_communities.communities.records.api.Community`) + +The `Community` class is the api-level object for a community. It is a subclass of the `Record` object (defined in `invenio_records.api.Record`). + +Unlike some `Record` object types, the `Community` object does not expose most its values as dictionary keys. But it exposes several dot properties. Some of these provide the data that is included in the serialized and projected forms of the community's data (in the search index and service layer responses): + +- 'access' +- 'children' +- 'created' +- 'custom_fields' +- 'deletion_status' +- 'files' +- 'id' +- 'is_deleted' +- 'is_verified' +- 'metadata' +- 'parent' +- 'pid' +- 'slug' +- 'theme' +- 'updated' + +Other properties are provided for internal manipulation and management of the `Community` object: +- 'bucket' +- 'bucket_id' +- 'dumper' +- 'format_checker' +- 'index' +- 'model' +- 'model_cls' +- 'relations' +- 'revision_id' +- 'revisions' +- 'schema' +- 'tombstone' +- 'validator' + +The `Community` object also provides the following methods: +- 'clear' +- 'clear_none' +- 'commit' +- 'copy' +- 'create' +- 'delete' +- 'dumps' +- 'enable_jsonref' +- 'fromkeys' +- 'get' +- 'items' +- 'keys' +- 'loads' +- 'patch' +- 'pop' +- 'popitem' +- 'replace_refs' +- 'revert' +- 'send_signals' +- 'setdefault' +- 'undelete' +- 'update' +- 'validate' +- 'values' + +#### `CommunitiesRelationManager` (`invenio_communities.records.records.systemfields.communities.manager.CommunitiesRelationManager`) + +The `CommunitiesRelationManager` object is the manager for the `communities` field of the `RDMParent` object. It exposes dot properties including: + +- `default`: The default community for the record (a `Community` object). +- `entries`: A list of `Community` objects. +- `ids`: A list of community IDs (string UUIDs, not slugs). -new_version_draft = current_rdm_records_service.new_version(id_=pid, identity=identity) -``` +### Service-level Response Objects -The new version draft is a new draft of the published record. It includes the previous version's published state, which can be edited and published again. +#### `RecordItem` (`invenio_records_resources.services.records.results.RecordItem`) -Note that the new version draft is not automatically published. You must publish it separately. Its internal InvenioRDM record id (`id`) is the same as the previous version's id. But the new version, once published, will be assigned a new DOI. +The `RecordItem` object is the service-level response object for a record, used for individual results from the RDMRecordService. It is returned by service methods like `current_rdm_records_service.read()` or `current_rdm_records_service.search()`. -#### Soft-delete a published record +The `RecordItem` object has the following properties: -```python -from invenio_rdm_records.proxies import current_rdm_records_service +| Property | Type | Description | +|----------|------|-------------| +| `_data` | `dict` | The `_data` property does *not* return the same dictionary as the `to_dict()` method. It appears to be None for published records. | +| `_errors` | `list` | Any validation errors | +| `_expand` | `dict` | The expand options for the record | +| `_fields_resolver` | `dict` | The fields resolver for the record | +| `_identity` | `dict` | The identity for the record | +| `_links_tpl` | `dict` | The links template for the record | +| `_nested_links_item` | `dict` | The nested links item for the record | +| `_obj` | `dict` | The object for the record | +| `_record` | `invenio_rdm_records.records.api.RDMRecord` | The underlying api-level `RDMRecord` record object | +| `_schema` | `dict` | The schema for the record | +| `_service` | `invenio_rdm_records.services.RDMRecordService` | The service for the record | +| `data` | `dict` | The record data represented as a dictionary. This is the same dictionary returned by the `to_dict()` method. | +| `errors` | `list` | Any validation errors | +| `has_permissions_to` | `dict` | Permission checks | +| `id` | `str` | The record identifier | +| `links` | `dict` | Related URLs. The same as the `links` property of the `_record` object and the "links" value of the `data` dictionary. | -tombstone_info = {"note": "no specific reason, tbh"} -deleted_record = current_rdm_records_service.delete_record(identity, record.id, - tombstone_info) -``` -#### Restore a soft-deleted record +The `RecordItem` object also has the `to_dict()` method, which returns a representation of the record as a dictionary. For a published record, the `to_dict()` method returns a dictionary with the following shape: ```python -from invenio_rdm_records.proxies import current_rdm_records_service - -restored_record = current_rdm_records_service.restore_record(identity, record.id) -``` - - -## How Tos: Custom Record Service Components - - -### Component Methods - -The following documents the arguments and data available to the various service component methods for the `RDMRecordService`. - -#### create() - -The `create` method of a service component is called before the completion of the `RecordService.create` method. It receives the following arguments: -- data: dict -- record: `invenio_rdm_records.records.api.RDMDraft` -- errors: list -- uow: `invenio_records_resources.services.uow.UnitOfWork` - -##### `data` - -The `data` value is a simple `dict` holding the submitted data to be used to create the record. It has the general shape of the InvenioRDM record schema, although it lacks several of the top-level keys that are present in a record object: +{'access': {'embargo': {'active': False, 'reason': None}, + 'files': 'public', + 'record': 'public', + 'status': 'metadata-only'}, + 'created': '2025-03-19T20:49:34.391191+00:00', + 'custom_fields': {}, + 'deletion_status': {'is_deleted': False, 'status': 'P'}, + 'files': {'count': 0, + 'enabled': False, + 'entries': {}, + 'order': [], + 'total_bytes': 0}, + 'id': 'q2cae-anf51', + 'is_draft': False, + 'is_published': True, + 'links': {'access': 'https://localhost/api/records/q2cae-anf51/access', + 'access_grants': 'https://localhost/api/records/q2cae-anf51/access/grants', + 'access_groups': 'https://localhost/api/records/q2cae-anf51/access/groups', + 'access_links': 'https://localhost/api/records/q2cae-anf51/access/links', + 'access_request': 'https://localhost/api/records/q2cae-anf51/access/request', + 'access_users': 'https://localhost/api/records/q2cae-anf51/access/users', + 'archive': 'https://localhost/api/records/q2cae-anf51/files-archive', + 'archive_media': 'https://localhost/api/records/q2cae-anf51/media-files-archive', + 'communities': 'https://localhost/api/records/q2cae-anf51/communities', + 'communities-suggestions': 'https://localhost/api/records/q2cae-anf51/communities-suggestions', + 'doi': 'https://handle.stage.datacite.org/10.17613/q2cae-anf51', + 'draft': 'https://localhost/api/records/q2cae-anf51/draft', + 'files': 'https://localhost/api/records/q2cae-anf51/files', + 'latest': 'https://localhost/api/records/q2cae-anf51/versions/latest', + 'latest_html': 'https://localhost/records/q2cae-anf51/latest', + 'media_files': 'https://localhost/api/records/q2cae-anf51/media-files', + 'parent': 'https://localhost/api/records/hkz47-g3q07', + 'parent_doi': 'https://localhost/doi/10.17613/hkz47-g3q07', + 'parent_html': 'https://localhost/records/hkz47-g3q07', + 'requests': 'https://localhost/api/records/q2cae-anf51/requests', + 'reserve_doi': 'https://localhost/api/records/q2cae-anf51/draft/pids/doi', + 'self': 'https://localhost/api/records/q2cae-anf51', + 'self_doi': 'https://localhost/doi/10.17613/q2cae-anf51', + 'self_html': 'https://localhost/records/q2cae-anf51', + 'self_iiif_manifest': 'https://localhost/api/iiif/record:q2cae-anf51/manifest', + 'self_iiif_sequence': 'https://localhost/api/iiif/record:q2cae-anf51/sequence/default', + 'versions': 'https://localhost/api/records/q2cae-anf51/versions'}, + 'media_files': {'count': 0, + 'enabled': False, + 'entries': {}, + 'order': [], + 'total_bytes': 0}, + 'metadata': {'creators': [{'person_or_org': {'family_name': 'Brown', + 'given_name': 'Troy', + 'name': 'Brown, Troy', + 'type': 'personal'}}, + {'person_or_org': {'name': 'Troy Inc.', + 'type': 'organizational'}}], + 'publication_date': '2020-06-01', + 'publisher': 'Acme Inc', + 'resource_type': {'id': 'image-photograph', + 'title': {'en': 'Photo'}}, + 'title': 'A Romans story'}, + 'parent': {'access': {'grants': [], + 'links': [], + 'owned_by': {'user': '1'}, + 'settings': {'accept_conditions_text': None, + 'allow_guest_requests': False, + 'allow_user_requests': False, + 'secret_link_expiration': 0}}, + 'communities': {'default': '00c10e5a-cfb6-4c4d-ab7e-3894b5930181', + 'entries': [{'access': {'member_policy': 'open', + 'members_visibility': 'public', + 'record_policy': 'open', + 'review_policy': 'open', + 'visibility': 'public'}, + 'children': {'allow': False}, + 'created': '2025-03-19T20:49:33.284511+00:00', + 'custom_fields': {}, + 'deletion_status': {'is_deleted': False, + 'status': 'P'}, + 'id': '00c10e5a-cfb6-4c4d-ab7e-3894b5930181', + 'links': {}, + 'metadata': {'curation_policy': 'Curation ' + 'policy', + 'description': 'A ' + 'description', + 'organizations': [{'name': 'Organization ' + '1'}], + 'page': 'Information for ' + 'my community', + 'title': 'My Community', + 'type': {'id': 'event'}, + 'website': 'https://my-community.com'}, + 'revision_id': 2, + 'slug': 'my-community', + 'updated': '2025-03-19T20:49:33.452355+00:00'}], + 'ids': ['00c10e5a-cfb6-4c4d-ab7e-3894b5930181']}, + 'id': 'hkz47-g3q07', + 'pids': {'doi': {'client': 'datacite', + 'identifier': '10.17613/hkz47-g3q07', + 'provider': 'datacite'}}}, + 'pids': {'doi': {'client': 'datacite', + 'identifier': '10.17613/q2cae-anf51', + 'provider': 'datacite'}, + 'oai': {'identifier': 'oai:https://localhost:q2cae-anf51', + 'provider': 'oai'}}, + 'revision_id': 3, + 'stats': {'all_versions': {'data_volume': 0.0, + 'downloads': 0, + 'unique_downloads': 0, + 'unique_views': 0, + 'views': 0}, + 'this_version': {'data_volume': 0.0, + 'downloads': 0, + 'unique_downloads': 0, + 'unique_views': 0, + 'views': 0}}, + 'status': 'published', + 'updated': '2025-03-19T20:49:34.451290+00:00', + 'versions': {'index': 1, 'is_latest': True, 'is_latest_draft': True}} + ``` + +#### `CommunityItem` (`invenio_communities.records.api.CommunityItem`) + +The `CommunityItem` object is the service-level response object for a community. It is returned by service methods like `current_communities.service.read()` or `current_communities.service.search()`. + +The `CommunityItem` object has the following properties: + +| Property | Type | Description | +|----------|------|-------------| +| `_record` | `invenio_communities.records.api.Community` | The underlying api-level `Community` record object | +| `data` | `dict` | The record data as a dictionary | +| `errors` | `list` | Any validation errors | +| `has_permissions_to` | `dict` | Permission checks | +| `id` | `str` | The record identifier | +| `links` | `dict` | Related URLs. The same as the `links` property of the `_record` object and the "links" value of the `data` dictionary. | + +Its `data` property is a dictionary identical to the `to_dict()` method's return value. It has the following shape: ```python { -'access': { - 'files': 'public', - 'record': 'public' -}, -'custom_fields': {}, -'files': {'enabled': False}, -'metadata': { - 'creators': [ - {'person_or_org': { - 'family_name': 'Brown', - 'given_name': 'Troy', - 'name': 'Brown, Troy', - 'type': 'personal' - } + 'id': '6bcba8b1-f967-4175-9557-c71dea07c8e7', + 'created': '2025-03-19T19:18:48.550894+00:00', + 'updated': '2025-03-19T19:18:48.643023+00:00', + 'links': { + 'featured': 'https://localhost/api/communities/6bcba8b1-f967-4175-9557-c71dea07c8e7/featured', + 'self': 'https://localhost/api/communities/6bcba8b1-f967-4175-9557-c71dea07c8e7', + 'self_html': 'https://localhost/collections/my-community', + 'settings_html': 'https://localhost/collections/my-community/settings', + 'logo': 'https://localhost/api/communities/6bcba8b1-f967-4175-9557-c71dea07c8e7/logo', + 'rename': 'https://localhost/api/communities/6bcba8b1-f967-4175-9557-c71dea07c8e7/rename', + 'members': 'https://localhost/api/communities/6bcba8b1-f967-4175-9557-c71dea07c8e7/members', + 'public_members': 'https://localhost/api/communities/6bcba8b1-f967-4175-9557-c71dea07c8e7/members/public', + 'invitations': 'https://localhost/api/communities/6bcba8b1-f967-4175-9557-c71dea07c8e7/invitations', + 'requests': 'https://localhost/api/communities/6bcba8b1-f967-4175-9557-c71dea07c8e7/requests', + 'records': 'https://localhost/api/communities/6bcba8b1-f967-4175-9557-c71dea07c8e7/records', + 'membership_requests': 'https://localhost/api/communities/6bcba8b1-f967-4175-9557-c71dea07c8e7/membership-requests' + }, + 'revision_id': 2, + 'slug': 'my-community', + 'metadata': { + 'title': 'My Community', + 'description': 'A description', + 'curation_policy': 'Curation policy', + 'page': 'Information for my community', + 'type': { + 'id': 'event', + 'title': {'en': 'Event'} }, - {'person_or_org': { - 'name': 'Troy Inc.', - 'type': 'organizational' - } - } - ], - 'publication_date': '2020-06-01', - 'publisher': 'Acme Inc', - 'resource_type': {'id': 'image-photograph'}, - 'title': 'A Romans story' -}, -'pids': {} + 'website': 'https://my-community.com', + 'organizations': [{'name': 'Organization 1'}] + }, + 'access': { + 'visibility': 'public', + 'members_visibility': 'public', + 'member_policy': 'open', + 'record_policy': 'open', + 'review_policy': 'open' + }, + 'custom_fields': {}, + 'deletion_status': { + 'is_deleted': False, + 'status': 'P' + }, + 'children': {'allow': False} } ``` -In particular, the `data` value lacks the following keys: -- `id` -- `created` -- `updated` -- `revision_id` -- `version_id` - -If the record has not yet been published (or a DOI reserved), the 'pids' key will be empty. - - -##### `record` - -The `record` value is a `invenio_rdm_records.records.api.RDMDraft` object that includes all of the `data` values, along with the keys: -- $schema -- pid (as opposed to pids, a separate field) -- media_files (if not present in `data`) -- custom_fields (if not present in `data`) - -For more information on the `RDMDraft` object, see the [InvenioRDM Record Objects](#invenio-rdm-record-objects) section. - - -#### update_draft() - -The `update_draft` method of a service component is called before the completion of the `RecordService.update_draft` method. It receives the following arguments: -- identity: `invenio_accounts.models.User` -- record: `invenio_rdm_records.records.api.RDMDraft` -- data: dict -- errors: list -- uow: `invenio_records_resources.services.uow.UnitOfWork` - -##### `record` - -The `record` value is a `invenio_rdm_records.records.api.RDMDraft` object that represents the draft in its previous state (before the update). - -##### `data` - -The `data` value is a `dict` holding the submitted data to be used to update the draft. It has the general shape of the InvenioRDM record schema, although it lacks several of the top-level keys that are present in a record object. - -Note that the `data` value input at the start of the `update_draft` method represents the complete new metadata for the draft. It is not a delta from the previous metadata. - -##### `errors` - -The `errors` value is a list of errors that occurred during the validation of the `data` value (during self.schema.load()). - -#### publish() - -The `publish` method of a service component is called before the completion of the `RecordService.publish` method. It receives the following arguments: -- identity: `invenio_accounts.models.User` -- draft: `invenio_rdm_records.records.api.RDMDraft` -- record: `invenio_rdm_records.records.api.RDMRecord` -- uow: `invenio_records_resources.services.uow.UnitOfWork` - -##### `draft` - -The `draft` value is a `invenio_rdm_records.records.api.RDMDraft` object that represents the draft in its previous state (before the publish). - -##### `record` - -The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the published record. - -#### edit() - -The `edit` method of a service component is called before the completion of the `RDMRecordService.edit` method. It receives the following arguments: -- identity: `invenio_accounts.models.User` -- draft: `invenio_rdm_records.records.api.RDMDraft` -- record: `invenio_rdm_records.records.api.RDMRecord` -- uow: `invenio_records_resources.services.uow.UnitOfWork` - -##### `draft` - -The `draft` value is a `invenio_rdm_records.records.api.RDMDraft` object. If a draft already existed for the published record, this represents the draft in its previous state (before the edit). If no draft existed, this represents the new draft being created by the `RDMRecordService.edit` method. - -##### `record` - -The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the published record. - -#### new_version() - -The `new_version` method of a service component is called before the completion of the `RDMRecordService.new_version` method. It receives the following arguments: -- identity: `invenio_accounts.models.User` -- draft: `invenio_rdm_records.records.api.RDMDraft` -- record: `invenio_rdm_records.records.api.RDMRecord` -- uow: `invenio_records_resources.services.uow.UnitOfWork` - -##### `draft` - -The `draft` value is a `invenio_rdm_records.records.api.RDMDraft` object that represents the **new** draft being created by the `RDMRecordService.new_version` method. - -##### `record` - -The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the previous published record (the final state of the previous version). - -#### delete_draft() - -The `delete_draft` method of a service component is called before the completion of the `RecordService.delete_draft` method. It receives the following arguments: -- identity: `invenio_accounts.models.User` -- draft: `invenio_rdm_records.records.api.RDMDraft` -- record: `invenio_rdm_records.records.api.RDMRecord` -- force: bool -- uow: `invenio_records_resources.services.uow.UnitOfWork` - -Note: If the draft has no corresponding published record, the parent record will automatically be deleted. Otherwise, the published record and its parent will be left untouched. - -##### `draft` - -The `draft` value is a `invenio_rdm_records.records.api.RDMDraft` object that represents the draft to be deleted. - -##### `record` - -The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the published record corresponding to the draft (if one exists). - -##### `force` - -The `force` value is a boolean that indicates whether the draft should be hard deleted. Generally, this is True if there is no corresponding published record. If there is a published record, the `force` value is False and the draft will be soft deleted in order to preserve the draft's `version_id` counter for optimistic concurrency control. - - -#### delete_record() - -The `delete_record` method of a service component is called before the completion of the `RecordService.delete_record` method. It receives the following arguments: -- identity: `invenio_accounts.models.User` -- data: dict -- record: `invenio_rdm_records.records.api.RDMRecord` -- uow: `invenio_records_resources.services.uow.UnitOfWork` - -##### `data` - -The `data` value is a `dict` holding the tombstone information after it has been expanded by self.schema_tombstone.load(). - -##### `record` - -The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the record to be deleted. - -#### update_tombstone() - -The `update_tombstone` method of a service component is called before the completion of the `RecordService.update_tombstone` method. It receives the following arguments: -- identity: `invenio_accounts.models.User` -- data: dict -- record: `invenio_rdm_records.records.api.RDMRecord` -- uow: `invenio_records_resources.services.uow.UnitOfWork` - -##### `data` - -The `data` value is a `dict` holding the tombstone information after it has been expanded by self.schema_tombstone.load(). - -##### `record` - -The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the record to be deleted. - -#### restore_record() - -The `restore_record` method of a service component is called before the completion of the `RecordService.restore_record` method. It receives the following arguments: -- identity: `invenio_accounts.models.User` -- record: `invenio_rdm_records.records.api.RDMRecord` -- uow: `invenio_records_resources.services.uow.UnitOfWork` - -#### mark_record_for_purge() - -The `mark_record_for_purge` method of a service component is called before the completion of the `RecordService.mark_record_for_purge` method. It receives the following arguments: -- identity: `invenio_accounts.models.User` -- record: `invenio_rdm_records.records.api.RDMRecord` -- uow: `invenio_records_resources.services.uow.UnitOfWork` - -#### unmark_record_for_purge() - -The `unmark_record_for_purge` method of a service component is called before the completion of the `RecordService.unmark_record_for_purge` method. It receives the following arguments: -- identity: `invenio_accounts.models.User` -- record: `invenio_rdm_records.records.api.RDMRecord` -- uow: `invenio_records_resources.services.uow.UnitOfWork` - - -#### lift_embargo() - -The `lift_embargo` method of a service component is called before the completion of the `RecordService.lift_embargo` method. It receives the following arguments: -- identity: `invenio_accounts.models.User` -- draft: `invenio_rdm_records.records.api.RDMDraft` -- record: `invenio_rdm_records.records.api.RDMRecord` -- uow: `invenio_records_resources.services.uow.UnitOfWork` - -#### import_files() - -The `import_files` method of a service component is called before the completion of the `RecordService.import_files` method. It receives the following arguments: -- identity: `invenio_accounts.models.User` -- draft: `invenio_rdm_records.records.api.RDMDraft` -- record: `invenio_rdm_records.records.api.RDMRecord` -- uow: `invenio_records_resources.services.uow.UnitOfWork` - -##### `draft` - -The `draft` value is a `invenio_rdm_records.records.api.RDMDraft` object that represents the new draft being created for a new record version. - -##### `record` - -The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the previous published version of the record. - +Its `to_dict()` method returns a dictionary with the same shape as the `data` property. diff --git a/docs/source/developing/building.md b/docs/source/developing/building.md new file mode 100644 index 000000000..23c7a2803 --- /dev/null +++ b/docs/source/developing/building.md @@ -0,0 +1,111 @@ +# Build Processes + +## Building the Documentation + +The documentation is built using Sphinx. The documentation source files are located in the `docs/source` directory. + +To build the documentation, run the following command: + +```bash +sphinx-build -b html docs/source docs/build/html +``` + +This will build the documentation and save it in the `docs/build/html` directory. + +```{note} +The documentation is built automatically and published to the `gh-pages` branch when a change is pushed or PR is merged into the `main` branch. +``` + +## Building JS, CSS, and Other Static Assets + +InvenioRDM, the foundation for KCWorks, generally bundles its frontend asset file as part of its python packages. This means that the JavaScript and CSS (and .less and .scss files) cannot simply be installed as npm dependencies. They must be gathered from the python packages and built in a central location. Similarly, where those js files depend on npm packages, the various python packages can declare their own JavaScript dependencies, which must be included in that central build. + +### Build script and CLI commands + +The full build process is handled in KCWorks by the `scripts/build-assets.sh` script, intended to be run inside the `web-ui` container. This script handles the following commands from InvenioRDM's standard build process: + +From the KCWorks source directory, the script runs the following commands: + +```{note} +The `invenio webpack` commands are aliases for the `flask webpack` commands. These are defined by the `flask-webpackext` package. But InvenioRDM exposes all flask commands using the `invenio` prefix as an alias for the `flask` prefix. +``` + +#### 1. ``invenio webpack collect -v`` + +webpack collect + +Gathers static files that don't require building from the python packages, based on the static files locations defined in the application's blueprints. These files are placed in the `/opt/invenio/var/instance/static` directory and are exposed at the `/static` URL. + +#### 2. ``invenio webpack clean create`` + +webpack clean create + +This performs four actions to set up for the build: + +- Deletes the existing built assets directory (`/opt/invenio/var/instance/static/dist`). +- Copies all asset source files to the central Webpack build context directory (`/opt/invenio/var/instance/assets`). This covers all of the files that need to be built by Webpack +- Symlinks the `webpack.config.js` file supplied by `invenio-assets` into the `/opt/invenio/var/instance/assets/build` directory. +- Generates a new `package.json` file in the top-level `assets` directory. This begins with the base package.json provided by `invenio-assets` and injects all of the additional npm dependencies declared in the `invenio_assets.webpack` entrypoints. +- Creates a new `config.js` file (in the `/opt/invenio/src/assets/build` directory) that can by imported by the `webpack.config.js` and provides Webpack with + - the `build` context providing directory paths for the gathered source files (`assets/build`) and final built files (`static/dist`) as well as any other static files (`static`) + - the cumulative list of `aliases` that allow Webpack to find files in the subfolders of `assets` via `../../less`, `@js`, etc. + - the webpack `entry` points, which are the files that will be built by Webpack. (Not to be confused with the python `entrypoints` defined by `invenio_assets.webpack`.) + +(Under the hood these steps are all handled by `pywebpack` via `flask_webpackext` and the `WebpackBundleProject` class.) + +The `clean` subcommand instructs invenio-assets to delete the existing built assets directory (`/opt/invenio/var/instance/static/dist`) and recreate it. If you want to keep the existing build assets and simply copy into it, you can use the `create` subcommand without the `clean` subcommand. + +#### 3. ``invenio webpack install`` + +webpack install + +Runs the `npm install` defined in the newly assembled `package.json` file in `/opt/invenio/var/instance/assets`. Dependencies are downloaded into `/opt/invenio/var/instance/assets/node_modules`. + +#### 4. ``cd /opt/invenio/src && invenio shell /opt/invenio/src/scripts/symlink_assets.py`` + +webpack symlink + +This symlinks all of the files in the source `assets` directory (`/opt/invenio/src/assets`) to the `/opt/invenio/var/instance/assets` directory. This includes all js, less, and scss files, as well as the translations directory. These files are not included in the installable `kcworks` python package, and so were not included earlier in the file discovery and project assembly that flask_webpackext performs based on entry points. + +#### 5. ``invenio webpack build`` + +webpack build + +Runs `npm run build` command to execute the webpack command defined in the `package.json` file. This builds the assets, placing the built files in the `/opt/invenio/var/instance/static/dist` directory. + +The actual webpack `build` command is: + +```bash +NODE_PRESERVE_SYMLINKS=1 npm_config_report=1 NODE_ENV=production|development webpack --config ./build/webpack.config.js +``` + +The `webpack.config.js` in `/opt/invenio/var/assets/build` is the main config file controlling Webpack itself, supplemented with aliases and entries from the `config.js` file in the same directory. The build context (from `config.js`) is set to `/opt/invenio/var/instance/assets`. The webpack command sets webpack `mode` as either "production" or "development" based on the value of the `NODE_ENV` environment variable. + +The BundleTracker plugin in `webpack.config.js` writes the manifest file into the `/opt/invenio/var/instance/static/dist` directory to tell Python where the built assets are located. + +The resulting `dist` folder, holding the compiled assets, is exposed at the `/static/dist/` URL. + +```{note} +In vanilla InvenioRDM, the ``flask webpack buildall`` command is used to run the `create`, `install`, and `build` commands in sequence. It does not run the `collect` command, and does not run the script to symlink the development assets. +``` + +### Watching files for changes + +The `package.json` file in the `assets` directory includes the `start` script, which will be triggered by `flask webpack start` and runs webpack with the same config file but `NODE_ENV=development`. This will not minify the compiled assets, leaving them readable and easier to debug. This will also spin up the live reload plugin. + +### Key file locations + +- config.js file in `/opt/invenio/src/assets/build/` +- built css and js files in `/opt/invenio/var/instance/static/dist/` + - public url is `static/dist/` +- static css and js files (not needing build) in `/opt/invenio/var/instance/static/css` and `/opt/invenio/var/instance/static/js` + - public url is `static/css/` and `static/js/` +- webpack build context is `/opt/invenio/var/instance/assets/` +- manifest.json is `/opt/invenio/var/instance/static/dist/manifest.json` + +### Key python packages involved + +- invenio-assets +- flask-webpackext +- flask-collect +- pywebpack diff --git a/docs/source/developing/code_standards.md b/docs/source/developing/code_standards.md new file mode 100644 index 000000000..bf261175c --- /dev/null +++ b/docs/source/developing/code_standards.md @@ -0,0 +1,46 @@ +# Development Standards + +## Upstream InvenioRDM standards + +KCWorks is built on top of InvenioRDM, which has a number of standards for coding style and practices. These standards are documented at https://inveniordm.readthedocs.io/en/latest/development/best-practices. KCWorks developers should follow these standards to ensure that code can be contributed back to the wider InvenioRDM project where desirable. + +## Code Style + +### Python + +Python code should be formatted using the `black` formatter. + +### JavaScript + +JavaScript code should be formatted using the `prettier` formatter. Indentation should be 2 spaces. + +### CSS + +CSS code should be formatted using the `prettier` formatter. Indentation should be 4 spaces. + +## Accessibility + +KCWorks should conform to WCAG 2.1 AA standards for web accessibility as well as to the InvenioRDM accessibility guidelines: https://inveniordm.docs.cern.ch/develop/best-practices/accessibility/. + +## UI/UX + +KCWorks UI elements should adhere to the InvenioRDM UI/UX guidelines: https://inveniordm.docs.cern.ch/develop/best-practices/ui/. + +### CSS and Theming + +KCWorks uses a custom theme layer built on top of the InvenioRDM default theme, which employs the Semantic UI library (https://semantic-ui.com/) and its standard implementation in React (https://react.semantic-ui.com/). Development should follow the InvenioRDM theming guidelines: https://inveniordm.docs.cern.ch/develop/best-practices/theming/. + +### React components + +KCWorks uses React as much as possible for the UI layer, wherever possible using the `semantic-ui-react` library to implement Semantic UI components. + +Generally we follow the InvenioRDM React component guidelines: https://inveniordm.docs.cern.ch/develop/best-practices/react/. Note, however, some points at which we diverge from the InvenioRDM guidelines (although not from the practice of some InvenioRDM developers): + +- **DO** always prefer functional components over class components. +- **DO** employ React hooks (e.g., `useState`, `useEffect`, etc.) instead of class lifecycle methods. + +Whatever the relative merits of class components, they are now deprecated in React and should not be used in KCWorks. + +The InvenioRDM project also tends to use small React components embedded in static HTML generated by Jinja2 templates. This practice should be avoided in KCWorks. Instead, KCWorks should work towards implementing a true React-based UI layer that is used for all UI elements. + +Where possible, however, KCWorks should employ built-in InvenioRDM UI components, overriding them where necessary using the `react-overridable` library as described here: https://inveniordm.docs.cern.ch/develop/howtos/override_components/. diff --git a/docs/source/developing/how_tos.md b/docs/source/developing/how_tos.md new file mode 100644 index 000000000..8296ed981 --- /dev/null +++ b/docs/source/developing/how_tos.md @@ -0,0 +1,460 @@ +# How Tos + +## Creating and Modifying Records in General + +All InvenioRDM record services inherit the same core methods from the `RecordService` class. In the examples below, the `service` variable represents an instance of a record service. The `identity` variable represents an identity object. + +### Update a record + +Note that this will not work for deposit records, since they are not directly editable. The RDMRecordService `update` method will raise a `NotImplementedError` error. Those records must be updated via a draft. Other record services, though, allow direct updates. + +```python +record = service.read(id_=pid, identity=identity)._record +record.update(metadata) + +# the refresh is required because the access system field takes precedence +# over the record's data in 'record.commit()' +record.access.refresh_from_dict(record["access"]) +record.commit() +db.session.commit() +service.indexer.index(record) +``` + +### Delete a record + +Note that this will not work for deposit records, since they are not directly deletable. The RDMRecordService `delete` method will raise a `NotImplementedError` error. Those records must be deleted via a draft. Other record services, though, allow direct deletions. + +```python +deleted_record = service.delete(id_=pid, identity=identity) +``` + + + +## Reading Deposit Records (RDMRecordService) + +Note that, unlike most record service retrieval methods, the `read` method does not use the search index. It retrieves the record from the database directly with a SQLAlchemy query. This means, though, that it will not always include the latest data from the search index, and that updated information present in a `read` result may not yet be present in the search index. + +```python +from invenio_rdm_records.proxies import current_rdm_records_service + +one_record = current_rdm_records_service.read(identity, id) +all_records = current_rdm_records_service.read_all() +multiple_records = current_rdm_records_service.read_many(identity, ids) +``` + +## Creating and Modifying a Deposit Record (RDMRecordService) + +### The InvenioRDM Record Life Cycle + +InvenioRDM uses a "draft-first" approach to record creation and modification. Records are created as drafts and the published in a separate step. Published records cannot be modified directly. Instead, a new draft must be created, updated with new metadata, and then published again. + +No revision history is kept for drafts or for edits to published records. Only a record's latest draft is kept, and only its latest published state is preserved. In order to preserve a history of changes, you must create new record *versions*. When a new *version* is created, the previous version's published state is preserved. A new draft is created that can be published without affecting the previous version. This new version can, in turn, be edited and re-published any number of times without any preserved history. When desired, a new permanently preserved state for the record can by frozen by creating yet another new version. + +While a record is in draft state, it can be hard deleted with no preserved record. Once a draft has been published, it can generally only be soft deleted. The record is no longer available or discoverable via the search index, but a tombstone placeholder is preserved. This provides a record that can be presented if, for example, someone tries to access a deleted record's DOI link. + +The life cycle of records for a single work can be represented in a diagram like this: + +RDMRecord Life Cycle + +The solid arrows represent methods of the `RDMRecordService` class. The beige rectangles represent preserved versions of the record, recoverable record states in its revision history. + +### Gotchas with the RDMRecordService + +Note that InvenioRDM only ever allows one draft to be associated with a record. There is no editing history for drafts. So draft updates are "destructive" in the sense that the previous state of the draft is lost. If you need to keep a history of changes, you must create published versions of the record. + +### Create a draft of a new record + +```python +from invenio_rdm_records.proxies import current_rdm_records_service +draft = current_rdm_records_service.create(identity=identity, data=data) +``` + +### Hard delete a draft + +```python +from invenio_rdm_records.proxies import current_rdm_records_service + +current_rdm_records_service.delete_draft(id_=pid, identity=identity) +``` + +No tombstone is created for a hard deleted draft. It cannot be recovered once deleted. + +### Update an unpublished draft + +```python +from invenio_rdm_records.proxies import current_rdm_records_service +draft_data = current_rdm_records_service.read_draft(id_=pid, identity=identity).data.copy() +# update the metadata... +edited_draft = current_rdm_records_service.update_draft(id_=pid, identity=identity, data=metadata) +``` + +### Update a published record via a new draft + +```python +from invenio_rdm_records.proxies import current_rdm_records_service + +# create a draft of the published record +draft_of_published = current_rdm_records_service.edit(id_=pid, identity=identity) +# update the draft +updated_draft = current_rdm_records_service.update_draft(id_=pid, identity=identity, data=metadata) +# publish the draft +published_record = current_rdm_records_service.publish(id_=pid, identity=identity) +``` + +### Create a new version of a published record + +```python +from invenio_rdm_records.proxies import current_rdm_records_service + +new_version_draft = current_rdm_records_service.new_version(id_=pid, identity=identity) +``` + +The new version draft is a new draft of the published record. It includes the previous version's published state, which can be edited and published again. + +Note that the new version draft is not automatically published. You must publish it separately. Its internal InvenioRDM record id (`id`) is the same as the previous version's id. But the new version, once published, will be assigned a new DOI. + +### Soft-delete a published record + +```python +from invenio_rdm_records.proxies import current_rdm_records_service + +tombstone_info = {"note": "no specific reason, tbh"} +deleted_record = current_rdm_records_service.delete_record(identity, record.id, + tombstone_info) +``` + +### Restore a soft-deleted record + +```python +from invenio_rdm_records.proxies import current_rdm_records_service + +restored_record = current_rdm_records_service.restore_record(identity, record.id) +``` + +### Add a record to a community/collection + +#### Using helper class + +```python +from invenio_record_importer_kcworks.services.communities import CommunitiesHelper + +CommunitiesHelper().publish_record_to_community(draft.id, community.id) +``` + +or in tests + +```python +from tests.fixtures.communities import add_community_to_record + +add_community_to_record(db, record, community_id, default=True) +``` + +#### Using service layer + +```python +from invenio_rdm_records.proxies import current_rdm_records +from invenio_requests.proxies import current_requests_service +from invenio_access.permissions import system_identity + +record_communities = current_rdm_records.record_communities_service + +# Try to create and submit a 'community-inclusion' request +requests, errors = record_communities.add( + system_identity, # in place of system_identity, use the identity of the user who is adding the record to the community + draft_id, + {"communities": [{"id": community_id}]}, +) +``` + +If the record is already in the community, the returned `errors` list will contain an error dictionary with a message including the words "already included". + +If the identity has permission to add the record without review, the request should be accepted without further action. Otherwise, the request can be accepted programmatically by calling the `include` method of the `CommunityInclusionService`. + +```python +submitted_request = requests[0] # from above +request_id = ( + submitted_request["id"] + if submitted_request.get("id") + else submitted_request["request"]["id"] +) +request_obj = current_requests_service.read( + system_identity, request_id +)._record +community = current_communities.service.record_cls.pid.resolve( + community_id +) +community_inclusion = ( + current_rdm_records.community_inclusion_service +) +review_accepted = community_inclusion.include( + system_identity, community, request_obj, uow +) +``` + +#### Using lower-level API + +```python +from invenio_rdm_records.proxies import current_rdm_records +from invenio_db import db + +record = current_rdm_records.read(id_=pid, identity=identity)._record +# OR +# record = current_rdm_records.record_cls.pid.resolve(pid) + +# Add to community +record.parent.communities.add(community_id, default=default) +record.parent.commit() +db.session.commit() +current_rdm_records_service.indexer.index(record, arguments={"refresh": True}) +``` + + +## Custom Record Service Components + + +### Component Methods + +The following documents the arguments and data available to the various service component methods for the `RDMRecordService`. + +#### create() + +The `create` method of a service component is called before the completion of the `RecordService.create` method. It receives the following arguments: +- data: dict +- record: `invenio_rdm_records.records.api.RDMDraft` +- errors: list +- uow: `invenio_records_resources.services.uow.UnitOfWork` + +##### `data` + +The `data` value is a simple `dict` holding the submitted data to be used to create the record. It is the first return value from service.schema.load(). + +It has the shape of the InvenioRDM record schema, although it lacks several of the top-level keys that are present in a record object: + +```python +{ +'access': { + 'files': 'public', + 'record': 'public' +}, +'custom_fields': {}, +'files': {'enabled': False}, +'metadata': { + 'creators': [ + {'person_or_org': { + 'family_name': 'Brown', + 'given_name': 'Troy', + 'name': 'Brown, Troy', + 'type': 'personal' + } + }, + {'person_or_org': { + 'name': 'Troy Inc.', + 'type': 'organizational' + } + } + ], + 'publication_date': '2020-06-01', + 'publisher': 'Acme Inc', + 'resource_type': {'id': 'image-photograph'}, + 'title': 'A Romans story' +}, +'pids': {} +} +``` + +In particular, the `data` value lacks the following keys: +- `id` +- `created` +- `updated` +- `revision_id` +- `version_id` + +If the record has not yet been published (or a DOI reserved), the 'pids' key will be empty. + + +##### `record` + +The `record` value is a `invenio_rdm_records.records.api.RDMDraft` object that includes all of the `data` values, along with the keys: +- $schema +- pid (as opposed to pids, a separate field) +- media_files (if not present in `data`) +- custom_fields (if not present in `data`) + +For more information on the `RDMDraft` object, see the [InvenioRDM Record Objects](#invenio-rdm-record-objects) section. + +##### `errors` + +The `errors` value is a list of errors that occurred during the validation of the `data` value. Prior to running the service components. It is the second return value from self.schema.load(), which was run to produce the `data` dictionary. + +#### update_draft() + +The `update_draft` method of a service component is called before the completion of the `RecordService.update_draft` method. It receives the following arguments: +- identity: `invenio_accounts.models.User` +- record: `invenio_rdm_records.records.api.RDMDraft` +- data: dict +- errors: list +- uow: `invenio_records_resources.services.uow.UnitOfWork` + +##### `record` + +The `record` value is a `invenio_rdm_records.records.api.RDMDraft` object. It begins passing through the service components in its previous state (before the update), but is modified by the service components in sequence. + +##### `data` + +The `data` value is a `dict` holding the submitted data to be used to update the draft. It has the general shape of the InvenioRDM record schema, although it lacks several of the top-level keys that are present in a record object. + +Note that the `data` value input at the start of the `update_draft` method represents the complete new metadata for the draft. It is not a delta from the previous metadata. + +##### `errors` + +The `errors` value is a list of errors that occurred during the validation of the `data` value (during self.schema.load()). + +#### publish() + +The `publish` method of a service component is called before the completion of the `RecordService.publish` method. It receives the following arguments: +- identity: `invenio_accounts.models.User` +- draft: `invenio_rdm_records.records.api.RDMDraft` +- record: `invenio_rdm_records.records.api.RDMRecord` +- uow: `invenio_records_resources.services.uow.UnitOfWork` + +##### `draft` + +The `draft` value is a `invenio_rdm_records.records.api.RDMDraft` object that represents the draft in its previous state (before the publish). + +##### `record` + +The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the published record. + +#### edit() + +The `edit` method of a service component is called before the completion of the `RDMRecordService.edit` method. It receives the following arguments: +- identity: `invenio_accounts.models.User` +- draft: `invenio_rdm_records.records.api.RDMDraft` +- record: `invenio_rdm_records.records.api.RDMRecord` +- uow: `invenio_records_resources.services.uow.UnitOfWork` + +##### `draft` + +The `draft` value is a `invenio_rdm_records.records.api.RDMDraft` object. If a draft already existed for the published record, this represents the draft in its previous state (before the edit). If no draft existed, this represents the new draft being created by the `RDMRecordService.edit` method. + +##### `record` + +The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the published record. + +#### new_version() + +The `new_version` method of a service component is called before the completion of the `RDMRecordService.new_version` method. It receives the following arguments: +- identity: `invenio_accounts.models.User` +- draft: `invenio_rdm_records.records.api.RDMDraft` +- record: `invenio_rdm_records.records.api.RDMRecord` +- uow: `invenio_records_resources.services.uow.UnitOfWork` + +##### `draft` + +The `draft` value is a `invenio_rdm_records.records.api.RDMDraft` object that represents the **new** draft being created by the `RDMRecordService.new_version` method. + +##### `record` + +The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the previous published record (the final state of the previous version). + +#### delete_draft() + +The `delete_draft` method of a service component is called before the completion of the `RecordService.delete_draft` method. It receives the following arguments: +- identity: `invenio_accounts.models.User` +- draft: `invenio_rdm_records.records.api.RDMDraft` +- record: `invenio_rdm_records.records.api.RDMRecord` +- force: bool +- uow: `invenio_records_resources.services.uow.UnitOfWork` + +Note: If the draft has no corresponding published record, the parent record will automatically be deleted. Otherwise, the published record and its parent will be left untouched. + +##### `draft` + +The `draft` value is a `invenio_rdm_records.records.api.RDMDraft` object that represents the draft to be deleted. + +##### `record` + +The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the published record corresponding to the draft (if one exists). + +##### `force` + +The `force` value is a boolean that indicates whether the draft should be hard deleted. Generally, this is True if there is no corresponding published record. If there is a published record, the `force` value is False and the draft will be soft deleted in order to preserve the draft's `version_id` counter for optimistic concurrency control. + + +#### delete_record() + +The `delete_record` method of a service component is called before the completion of the `RecordService.delete_record` method. It receives the following arguments: +- identity: `invenio_accounts.models.User` +- data: dict +- record: `invenio_rdm_records.records.api.RDMRecord` +- uow: `invenio_records_resources.services.uow.UnitOfWork` + +##### `data` + +The `data` value is a `dict` holding the tombstone information after it has been expanded by self.schema_tombstone.load(). + +##### `record` + +The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the record to be deleted. + +#### update_tombstone() + +The `update_tombstone` method of a service component is called before the completion of the `RecordService.update_tombstone` method. It receives the following arguments: +- identity: `invenio_accounts.models.User` +- data: dict +- record: `invenio_rdm_records.records.api.RDMRecord` +- uow: `invenio_records_resources.services.uow.UnitOfWork` + +##### `data` + +The `data` value is a `dict` holding the tombstone information after it has been expanded by self.schema_tombstone.load(). + +##### `record` + +The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the record to be deleted. + +#### restore_record() + +The `restore_record` method of a service component is called before the completion of the `RecordService.restore_record` method. It receives the following arguments: +- identity: `invenio_accounts.models.User` +- record: `invenio_rdm_records.records.api.RDMRecord` +- uow: `invenio_records_resources.services.uow.UnitOfWork` + +#### mark_record_for_purge() + +The `mark_record_for_purge` method of a service component is called before the completion of the `RecordService.mark_record_for_purge` method. It receives the following arguments: +- identity: `invenio_accounts.models.User` +- record: `invenio_rdm_records.records.api.RDMRecord` +- uow: `invenio_records_resources.services.uow.UnitOfWork` + +#### unmark_record_for_purge() + +The `unmark_record_for_purge` method of a service component is called before the completion of the `RecordService.unmark_record_for_purge` method. It receives the following arguments: +- identity: `invenio_accounts.models.User` +- record: `invenio_rdm_records.records.api.RDMRecord` +- uow: `invenio_records_resources.services.uow.UnitOfWork` + + +#### lift_embargo() + +The `lift_embargo` method of a service component is called before the completion of the `RecordService.lift_embargo` method. It receives the following arguments: +- identity: `invenio_accounts.models.User` +- draft: `invenio_rdm_records.records.api.RDMDraft` +- record: `invenio_rdm_records.records.api.RDMRecord` +- uow: `invenio_records_resources.services.uow.UnitOfWork` + +#### import_files() + +The `import_files` method of a service component is called before the completion of the `RecordService.import_files` method. It receives the following arguments: +- identity: `invenio_accounts.models.User` +- draft: `invenio_rdm_records.records.api.RDMDraft` +- record: `invenio_rdm_records.records.api.RDMRecord` +- uow: `invenio_records_resources.services.uow.UnitOfWork` + +##### `draft` + +The `draft` value is a `invenio_rdm_records.records.api.RDMDraft` object that represents the new draft being created for a new record version. + +##### `record` + +The `record` value is a `invenio_rdm_records.records.api.RDMRecord` object that represents the previous published version of the record. diff --git a/docs/source/developing/i18n.md b/docs/source/developing/i18n.md new file mode 100644 index 000000000..79a2e679a --- /dev/null +++ b/docs/source/developing/i18n.md @@ -0,0 +1,41 @@ +# I18n + +## Translations + +There are two separate translation systems in InvenioRDM: the python translations provided by the `invenio-i18n` package using the python `babel` library, and the javascript translations provided by the `i18next` library. + +### Python Translations + +The python translations are stored in the `translations` directory in the root of the repository. These are then gathered with babel translations from other Invenio packages into the `translations` directory in the instance directory of the running instance (`/opt/invenio/var/instance/translations`). + +### Javascript Translations + +#### The structure of the Javascript translation packages + +The javascript translations are created and compiled by every InvenioRDM package that provides javascript UI components. These are found in the `assets/semantic-ui/translations` directory in each package. In the case of the `kcworks` package, these are found in the `assets/semantic-ui/translations/kcworks` directory. + +In addition, KCWorks provides translations for the javascript components that live outside the installable `kcworks` python package: overridden components and custom field templates in `assets/js`. These translations are compiled and stored in the top-level `assets/translations` directory of the source folder. + +So, for KCWorks, there are separate translation packages that are compiled independently in the following locations: + +- `assets/translations` +- `site/kcworks/assets/semantic-ui/translations/kcworks` +- `site/kcworks/dependencies/invenio-modular-deposit-form/invenio_modular_deposit_form/assets/semantic-ui/translations/invenio_modular_deposit_form` +- `site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/assets/semantic-ui/translations/invenio_modular_detail_page` + +These are in addition to the translations provided by other InvenioRDM packages that come precompiled. + +Each of these translation directories functions as a freestanding translation package, with its own `package.json` file, dependencies, and copies of the `i18next` object. The translation commands for each package are defined in that package's `package.json` file and are executed from the root of that translation directory. + +In each of these locations a separate instance of the `i18next` object is created in a freestanding `i18next.js` file. The components then import the `i18next` object from the translation directory attached to their own packages. + +#### Compiling Translations + +```bash +npm install // this installs the dependencies +npm run extract_messages // this extracts translatable strings from the javascript components, compiles them in a json file,and creates .pot files in the translations directory +npm run json_to_po // this creates the .po files from the .json files +npm run compile_catalog // this compiles the .po files into .mo files +npm run init_catalog language en // this initializes a new language and adds it to the language list of the local package.json file +``` + diff --git a/docs/source/developing/index.md b/docs/source/developing/index.md new file mode 100644 index 000000000..3e0f73f34 --- /dev/null +++ b/docs/source/developing/index.md @@ -0,0 +1,16 @@ +# Developing KCWorks + +```{toctree} +:maxdepth: 2 + +architecture.md +code_standards.md +source_control.md +workflow.md +testing.md +how_tos.md +building.md +stats.md +i18n.md +infrastructure.md +``` diff --git a/docs/source/infrastructure.md b/docs/source/developing/infrastructure.md similarity index 100% rename from docs/source/infrastructure.md rename to docs/source/developing/infrastructure.md diff --git a/docs/source/developing/source_control.md b/docs/source/developing/source_control.md new file mode 100644 index 000000000..f80306fb0 --- /dev/null +++ b/docs/source/developing/source_control.md @@ -0,0 +1,62 @@ +# Source Control and Versioning + +## Version Numbering + +KCWorks uses semantic versioning (https://semver.org/). When a new release is made, the version number should be incremented in the following files: + +- `README.md` +- `docs/source/README.md` +- `docs/source/conf.py` +- `site/pyproject.toml` +- `site/kcworks/__init__.py` + +While in beta, the version number should be followed by a numbered `-beta` suffix: e.g., `0.3.3-beta6`. This suffix should be updated continuously (without starting over again for minor releases) until version 1.0.0 is reached and KCWorks leaves beta. + +Bug fixes and other changes that do not introduce new features (including changes to documentation, build processes, etc.) should be considered `patch` releases. + +New features should be considered `minor` releases. + +## Version Control + +### Git Branching Strategy + +KCWorks employs a modified version of the Gitlab Flow branching strategy for version control. The repository has four persistent branches: + +- `main` is the default branch and is the reference point for active development. It will usually not be ready for production deployment. +- `staging` is the branch that is deployed to the staging server. It is created from the `main` branch when changes are ready to be tested. No commits should be made directly to the `staging` branch except to merge changes from `main`. +- `production` is the branch that is deployed to the development server. It is created from the `staging` branch when changes are ready to be deployed to the production server. No commits should be made directly to the `production` branch except to merge changes from `staging`. +- `gh_pages` is the branch that is used to generate the static documentation site for KCWorks on Github Pages. This branch is automatically updated from the `main` branch. + +#### Daily Development Workflow + +When a developer needs to make changes to the codebase, they should create a new temporary working branch from the `main` branch. This branch should be named descriptively, such as `feature/new-feature` or `fix/fix-issue`. Work in progress should be committed to this working branch until the developer is ready to merge the changes into the `main` branch. + +Changes should be merged back into `main` as often as possible, and the temporary branches deleted. These merges should be performed when a developer is ready to deploy the changes to the staging server for testing. This should generally be done *after* the appropriate tests have been written and are passing. Merges should also represent a single completed change (feature or fix). Developers should, though, think in terms of small, incremental changes and merge often. + +Merging to `main` should be done via pull request, and the merge only accepted if the newly added tests are present and passing. This ensures that the `main` branch is always in a deployable state and ready for incoming merges by other developers. Merges should be performed using the squash merge strategy (the equivalent of `git merge --squash `). This combines all of the incoming changes into a single commit, making the commit history cleaner and easier to read. + +No commits should be made directly to the `staging` or `production` branches. All changes should be made to the `main` branch and then merged into `staging` and `production` via pull requests. This is especially important because changes pushed to `staging` and `production` branches will automatically trigger rebuilding of the stanging or production containers and the deployment of the updated containers to the respective servers. + +### Commit strategy + +Developers should make frequent commits to their working branch. These may be as small and granular as the developer wishes since many incremental commits allow easy rollback to specific points in the development history. Such commits should be given descriptive names and commit messages that would allow quick identification of the changes. These commits will be squashed into a single commit when merged into `main`. + +Commits to the `main` branch should each represent a single completed change (feature or fix). We try to avoid `wip` commits in order to keep the commit history readable. So all of the changes for a single feature or fix should be squashed into a single commit when merged from a temporary working branch into `main`. + +Commits to the `main` branch should be named with the `feature` or `fix` prefix and one or more labels for the aspect of the codebase that the changes address. For example, `feature(upload-form): add a new upload form` or `fix(record-page): fix the problem with the record page`. In general, maintenance changes should be considered `fix` commits unless they are part of a larger feature or add new functionality. + +### Tagging Releases + +Whenever the KCWorks version number changes, that commit should be tagged with the new version number. This can be done by running the following command: + +```shell +git tag -a -m "Release " +``` +We do not create branches for each numbered release. + +### Git Submodules + +KCWorks uses git submodules to manage dependencies. The submodules are located in the `site/kcworks/dependencies` folder. The submodules are cloned from the upstream repositories when the KCWorks instance is first created. They are updated from the upstream repositories when the KCWorks instance is updated. + +Note that in some cases there are inter-dependencies between these submodules. For example, the `invenio-record-importer-kcworks` submodule has its own dependency on the `invenio-group-collections-kcworks` submodule. When cloning the KCWorks repository, you **should not use the `--recurse-submodules` option** because this will clone redundant copies of these inter-dependent submodules. Instead, you should clone the KCWorks repository and then initialize the submodules in a separate step with `git submodule update --init`. Likewise, when updating the KCWorks submodules, you should use the `git submodule update --remote` command **without the `--recursive` option**. + diff --git a/docs/source/developing/stats.md b/docs/source/developing/stats.md new file mode 100644 index 000000000..08093a27e --- /dev/null +++ b/docs/source/developing/stats.md @@ -0,0 +1,454 @@ +# Stats and Analytics + +## References + +https://github.com/inveniosoftware/invenio-stats/blob/master/invenio_stats/utils.py#L94 +https://github.com/inveniosoftware/invenio-app-rdm/blob/master/invenio_app_rdm/config.py#L1186 +https://github.com/inveniosoftware/react-invenio-app-ils/blob/c55054d59f2a033a5ffffc59b67f4fa1819d2913/src/lib/api/stats/stats.js#L5 + +## Stats indices + +Usage stats are stored only in the search index, not in the db. This makes it imperative that the stats indices are regularly backed up, because the stats cannot be recovered from the db. + +### Individual events + +Indices are created to store the individual usage events +- `kcworks-events-stats-record-view-YYYY-MM` +- `kcworks-events-stats-file-download-YYYY-MM` + +These are collectively aliased to +- `kcworks-events-stats-record-view` +- `kcworks-events-stats-file-download` + +### Aggregations + +In addition, aggregate indices are created for each month with the naming patterns +- `kcworks-stats-file-download-YYYY-MM` +- `kcworks-stats-record-view-YYYY-MM` +These are collectively aliased to +- `kcworks-stats-file-download` +- `kcworks-stats-record-view` + +A bookmarks index tracks the creation of the aggregate indices: +- `kcworks-stats-bookmarks` + +The aggregate records each count a single record's events (views or downloads) during the month for the index. They include both the recid and the parent recid, allowing the aggregations to be collected either for an individual version or for all versions of a work (i.e., parent). + +- bucket aggregations create a bucket for each unique term in a field + - "aggregations.xxx.buckets" is an array of objects with "key" and "doc_count" values + +#### Aggregation requests + +in agg_iter: + +```python +dsl.Search(using=self.client, index=self.event_index).filter( + # Filter for the specific interval (hour, day, month) + "term", + timestamp=rounded_dt, +) +for p in range(num_partitions) + terms = agg_query.aggs.bucket( + "terms", + "terms", + field=unique_id, + include={"partition": p, "num_partitions": num_partitions}, + size=self.max_bucket_size, + ) + + terms.metric( + + "top_hit", "top_hits", size=1, sort={"timestamp": "desc"} + + ) + + for dst, (metric, src, opts) in self.metric_fields.items(): + + terms.metric(dst, metric, field=src, **opts) + + +{ + "aggs": { + "???": { + "terms": { + "terms": { + "field": "unique_session_id", + "partition": n, + "num_partitions": x, + "size": y + } + } + "cardinality": { + "field": "unique_session_id", + "precision_threshold": 1000, + } + } + } +} +``` + +query result basis for aggregation records, from a terms bucket aggregation with only stats returned: +- organized in buckets by "ui" + record id (or "unique_id") + - "doc_count" lists number of hits (events) for a given *day* (the set interval) + +```python +{ +'_shards': {'failed': 0, 'skipped': 0, 'successful': 69, 'total': 69}, +'aggregations': { + 'terms': { + 'buckets': [ + ... + { + 'doc_count': 1, + 'key': 'ui_yv6k0-srr25', + 'last_update': { + 'value': 1726598317179.0, + 'value_as_string': '2024-09-17T18:38:37.179Z' + }, + 'top_hit': { + 'hits': { + 'hits': [ + { + '_id': '2024-04-17T12:19:30-' + 'd719203049c7b7ffa7bad3dfc97de87225549cf7', + '_index': 'events-stats-record-view-2024-04', + '_score': None, + '_source': { + 'country': 'imported', + 'is_robot': False, + 'parent_recid': 'q4wph-4hk75', + 'recid': 'yv6k0-srr25', + 'timestamp': '2024-04-17T11:19:33', + 'unique_id': 'ui_yv6k0-srr25', + 'unique_session_id': + 'a6f9fcc160c3360209' + 'd163fb95983caee3273e3fb1a4ba549765f75c', + 'updated_timestamp': '2024-09-i' + '17T18:38:37.179332', + 'via_api': False, + 'visitor_id': + 'a6f9fcc160c3360209d163fb959' + '83caee3273e3fb1a4ba549765f75c' + }, + 'sort': [1713352773000] + } + ], + 'max_score': None, + 'total': { + 'relation': 'eq', + 'value': 1 + } + } + }, + 'unique_count': { + 'value': 1 + } + } + ], + 'doc_count_error_upper_bound': 0, + 'sum_other_doc_count': 0 + } +}, +'hits': { + 'hits': [], + 'max_score': None, + 'total': {'relation': 'eq', 'value': 174}}, + 'timed_out': False, + 'took': 10 +} +``` +### Index record schemas + +#### kcworks-events-stats-record-view + +```json +{ +"_index": "kcworks-events-stats-record-view-2019-01", +"_id": "2019-01-01T00:00:00-8e31b4cd058701ecf5ce0dbdc057f3cc775d94ce", +"_score": 1.0, +"_source": { + "timestamp": "2019-01-01T00:00:00", + "recid": "jnhz6-e2n32", + "parent_recid": "pbwf2-yty55", + "unique_id": "ui_jnhz6-e2n32", + "is_robot": false, + "country": "imported", + "via_api": false, + "visitor_id": "4c2caf11d9698e896a9b5990c43f60949578cc66deb98d2e31eddabd", + "unique_session_id": "4c2caf11d9698e896a9b5990c43f60949578cc66deb98d2e31eddabd", + "updated_timestamp": "2024-07-16T22:58:10.107933" + } +} +``` + +#### kcworks-events-stats-file-download + +```json +{ + "_index": "kcworks-events-stats-file-download-2019-01", + "_id": "2019-01-01T00:00:00-0f6eaae908805134818089196c2855f8804781de", + "_score": 1.0, + "_source": { + "timestamp": "2019-01-01T00:00:00", + "bucket_id": "019b4cd0-31f3-413c-bbc4-95047d1fde34", + "file_id": "da479344-5585-4bf9-9c6d-23cadf51e7ee", + "file_key": "lrvol2019iss13fulltext.pdf", + "size": 742774, + "recid": "k59an-48c77", + "parent_recid": "19xa6-enq55", + "is_robot": false, + "country": "imported", + "unique_id": "019b4cd0-31f3-413c-bbc4-95047d1fde34_da479344-5585-4bf9-9c6d-23cadf51e7ee", + "via_api": false, + "visitor_id": "4c2caf11d9698e896a9b5990c43f60949578cc66deb98d2e31eddabd", + "unique_session_id": "4c2caf11d9698e896a9b5990c43f60949578cc66deb98d2e31eddabd", + "updated_timestamp": "2024-07-17T18:34:13.204519" + } +} +``` + +#### kcworks-stats-bookmarks + +```json +{ + "_index": "kcworks-stats-bookmarks", + "_id": "9GFKe5ABGzTNItjdhxgL", + "_score": 1.0, + "_source": { + "date": "2024-07-04T01:10:00.181946", + "aggregation_type": "stats_reindex" + } +} +``` + +#### kcworks-stats-record-view (aggregates) + +```json +{ + "_index": "kcworks-stats-record-view-2019-01", + "_id": "ui_3bn84-vwr29-2019-01-01", + "_score": 1.0, + "_source": { + "timestamp": "2019-01-01T00:00:00", + "unique_id": "ui_3bn84-vwr29", + "count": 2, + "updated_timestamp": "2024-09-04T21:05:28.568054", + "unique_count": 2, + "recid": "3bn84-vwr29", + "parent_recid": "v51aw-69a63", + "via_api": false + } +} +``` + +#### kcworks-stats-file-download (aggregates) + +```json +{ + "_index": "kcworks-stats-file-download-2019-01", + "_id": "1770b96d-04a2-42ff-8bd5-4369f4fceb3c_78785ea0-70a1-49cf-b082-960bf6deae9c-2019-01-01", + "_score": 1.0, + "_source": { + "timestamp": "2019-01-01T00:00:00", + "unique_id": "1770b96d-04a2-42ff-8bd5-4369f4fceb3c_78785ea0-70a1-49cf-b082-960bf6deae9c", + "count": 2, + "updated_timestamp": "2024-09-04T20:56:41.105763", + "unique_count": 2, + "volume": 53651620.0, + "file_id": "78785ea0-70a1-49cf-b082-960bf6deae9c", + "file_key": "fair-use-in-the-visual-arts-lesson-plans-for-librarians.pdf", + "bucket_id": "1770b96d-04a2-42ff-8bd5-4369f4fceb3c", + "recid": "c2gjs-86225", + "parent_recid": "cqazz-qzj09" + } +} +``` + +## Retrieving stats + +### Useful OpenSearch queries + +To retrieve the cumulative file download stats for all records from a specific date, use the following query: + +```bash +GET kcworks-events-stats-file-download/_search?scroll=1m +``` + +```json +{ + "size": 10, + "query": { + "bool": { + "must": [ + {"term": {"is_robot": false}}, + {"range": {"timestamp": {"gte": "2024-11-15T00:00:00"}}} + ] + } + }, + "aggs": { + "unique_sessions": { + "cardinality": {"field": "unique_session_id"} + } + } +} +``` + +This query deduplicates the events by `unique_session_id`. + +To retrieve the record view stats, you can use the same query but replace the `kcworks-events-stats-file-download` index with `kcworks-events-stats-record-view`. + + + + +## Recording events + +### invenio_records + +- signals before and after... + - record create + - record update + - recort delete + - record revert + +Stats event recording is triggered by the record insertion signals from invenio_records, which are subscribed to like this: + +```python +from invenio_records.signals import (before_record_insert, \ + after_record_insert) +listener = before_record_insert.connect(do_something) +listener = after_record_insert.connect(do_something_else) +``` + +### invenio_rdm_records + +The `invenio_rdm_records` app subscribes to the record signals and triggers the stats event recording. + +## Stats collection configuration + +docs at https://invenio-stats.readthedocs.io/en/latest/configuration.html + +The configuration objects are shaped like this: + +`STATS_EVENTS` + +```python +{ + "file-download": { + "templates": "invenio_rdm_records.records.stats.templates.events.file_download", + "event_builders": [ + "invenio_rdm_records.resources.stats.file_download_event_builder", + "invenio_rdm_records.resources.stats.check_if_via_api", + ], + "cls": EventsIndexer, + "params": { + "preprocessors": [flag_robots, anonymize_user, build_file_unique_id] + }, +}, +``` + +`STATS_AGGREGATIONS` + +```python + "file-download-agg": { + "templates": "invenio_rdm_records.records.stats.templates.aggregations.aggr_file_download", + "cls": StatAggregator, + "params": { + "event": "file-download", + "field": "unique_id", + "interval": "day", + "index_interval": "month", + "copy_fields": { + "file_id": "file_id", + "file_key": "file_key", + "bucket_id": "bucket_id", + "recid": "recid", + "parent_recid": "parent_recid", + }, + "metric_fields": { + "unique_count": ( + "cardinality", + "unique_session_id", + {"precision_threshold": 1000}, + ), + "volume": ("sum", "size", {}), + }, + }, + }, +``` + +## Stat calculation for records + +calculated in invenio_rdm_records.records.stats.api.Statistics.get_record_stats() + +## Stats task scheduling + +```python +CELERY_BEAT_SCHEDULE = { + # indexing of statistics events & aggregations + "stats-process-events": { + StatsEventTask, + "schedule": crontab(minute="25,55"), # Every hour at minute 25 and 55 + }, + "stats-aggregate-events": { + StatsAggregationTask, + "schedule": crontab(minute=0), # Every hour at minute 0 + }, + "reindex-stats": StatsRDMReindexTask, # Every hour at minute 10 +} +``` + +## API query configuration + +STATS_QUERIES config variable defines allowed queries, params, permissions like this: + +```python +STATS_QUERIES = { + "record-view": { + "cls": TermsQuery, + "permission_factory": None, + "params": { + "index": "stats-record-view", + "doc_type": "record-view-day-aggregation", + "copy_fields": { + "recid": "recid", + "parent_recid": "parent_recid", + }, + "query_modifiers": [], + "required_filters": { + "recid": "recid", + }, + "metric_fields": { + "views": ("sum", "count", {}), + "unique_views": ("sum", "unique_count", {}), + }, + }, + } +``` + + + +## API endpoint permissions + +`STATS_PERMISSION_FACTORY = permissions_policy_lookup_factory` + + +## Other kinds of stats + +### Language of records + +To retrieve the counts of records with each language code from OpenSearch, use the following query: + +```bash +GET kcworks-rdmrecords-records/_search?scroll=1m +``` + +```json +{ + "size": 1, + "aggs": { + "languages": { + "terms": {"field": "metadata.languages.id", "size": 1000} + } + } +} +``` \ No newline at end of file diff --git a/docs/source/developing/testing.md b/docs/source/developing/testing.md new file mode 100644 index 000000000..4db376247 --- /dev/null +++ b/docs/source/developing/testing.md @@ -0,0 +1,92 @@ +# Automated Testing + +Automated tests (unit tests and integration tests) are run every time a commit is pushed to the knowledge-commons-works Github repo. You can (and should) also run the test suite locally. + +There are currently three distinct sets of tests that have to be run separately: +(a) python tests run using invenio's fixtures, +(b) javascript tests run separately using jest, +(c) Ghost Inspector tests that run on the deployed site (staging or production). + +## Python tests + +The python test suite includes (a) unit tests for back end code, (b) tests of ui views and api requests run with a client fixture. It also includes a mypy type-checking step, and it builds the documentation and compiles the translations. To run the unit tests and view/request tests, navigate to the root `knowledge-commons-works` folder and run +```console +bash run-tests.sh -vv +``` +Note that you will need to have your local docker service running for these tests to work, since they use the `docker-services-cli` tool to start the required services. + +```{warning} +Ensure that you have **stopped** the docker-compose project for your local development instance before running the tests! Otherwise, you will get conflicts with the services that are started by the tests. +``` + +### Passing pytest arguments to the test runner + +Any pytest arguments can be passed to the script, e.g., to run only tests whose names contain the word "view", and to show verbose output: +```console +bash run-tests.sh -k "view" -vv +``` + +To run the tests in a specific directory, use the `-d` flag: +```console +bash run-tests.sh -d tests/api +``` + +To run the tests in a specific file, use the `-f` flag: +```console +bash run-tests.sh -f tests/api/test_view.py +``` + +By default, the docker containers are stopped after the tests are run. To run the tests and leave the docker containers running, use the upper-case `-K` flag: +```console +bash run-tests.sh -K +``` + +### Test discovery and doctests + +The pytest configuration in `pyproject.toml` tells pytest to look for tests in the `tests` directory as well as in the `site/kcworks` directory (excluding the `dependencies` and `stats_dashboard` subdirectories). If you wish to expand this search, you can do so by adding additional directories to the `tool.pytest.ini_options.testpaths` list in the `pyproject.toml` file. + +Pytest will also run any doctests that are found in these directories. This includes any files that end with `.rst` as well as any doctests that are embedded in the docstrings of python files. + +### Test configuration + +The top-level `conftest.py` file is used to configure the test environment. Most of the tests use an invenio (Flask) app instance that receives all of the configuration variables from the `invenio.cfg` file. Some of these variables are then overridden in the `test_config` dictionary that `conftest.py` passes to the app instance. + +The test environment does not use the top-level `.env` file that is used in the development environment. Where environment variables are needed, these are provided in a dedicated environment file `tests/.env` that is used to configure the test environment in the test runner script `run-tests.sh`. + +### Pytest fixtures + +The `conftest.py` file loads a number of custom fixture files from the `tests/fixtures` directory. Note that any additional custom fixture files must be added to this list. They cannot be loaded automatically based on the `pyproject.toml` pytest configuration because the `tests` directory is not inside the `site` directory, which is the package build context for `kcworks`. + +### Additional actions included in the test runner + +The test runner includes additional actions that are not part of the pytest framework. These include: + +- Building the documentation with Sphinx + + +## Javascript tests + +Pytest does not directly test custom javascript files or React components. In order to test these, navigate to the root `knowledge-commons-works` folder and run +```console +bash run-js-tests.sh +``` +These tests are run using the jest test runner, configured in the packages.json file in the root knowledge-commons-works folder. + +This is equivalent to running +```console +npm run test +``` + +Note that these tests run using a local npm configuration in the knowledge-commons-works folder. Any packages that are normally available to InvenioRDM must be added to the local package.json configuration and will be installed in the local node_modules folder. Since this folder is not included in GIT version control, before you run the javascript tests you must ensure the required packages are installed locally by running + +```console +npm install +``` + +## Ghost Inspector tests + +The Ghost Inspector tests are run on the deployed site (staging or production). They run on a regular schedule and are used to ensure that the site is working as expected. + +```{note} +At present, Ghost Inspector tests are not run automatically when a pull request is merged into the `staging` or `production` branches. This should be implemented in the future once deployment to the respective servers is fully automated. +``` \ No newline at end of file diff --git a/docs/source/developing/workflow.md b/docs/source/developing/workflow.md new file mode 100644 index 000000000..841e98aea --- /dev/null +++ b/docs/source/developing/workflow.md @@ -0,0 +1,175 @@ +# Development Workflow + +## Updating the running KCWorks instance with development changes + +### Changes to html template files + +Changes to html template files will be visible immediately in the running Knowledge Commons Works instance. You simply need to refresh the page in your browser. + +If you add a new template file (including overriding an existing template file), you will need to collect the new file into the central templates folder and restart the uwsgi processes. This can be done by running the following command inside the `web-ui` container: + +```shell +invenio collect -v +uwsgi --reload /tmp/uwsgi_ui.pid +``` +Then refresh your browser. + +### Changes to invenio.cfg + +Changes to the invenio.cfg file will only take effect after the instance uwsgi processes are restarted. This can be done by running the following command inside the `web-ui` container: +```shell +uwsgi --reload /tmp/uwsgi_ui.pid +``` +Or you can restart the docker-compose project, which will also restart the uwsgi processes. + +### Changes to theme (CSS) and javascript files + +#### The basic build process (slow) + +Invenio employs a build process for css and javascript files. Changes to these files will not be visible in the running Knowledge Commons Works instance until the build process is run. This can be done by running the following command inside the `web-ui` container: + +```shell +bash ./scripts/build-assets.sh +``` + +#### Rebuilding changed files on the fly (fast but limited) + +The problem is that this build process takes a long time to run, especially in the containers. For most tasks, you can instead run the following command to watch for changes to the files and automatically rebuild them: + +```shell +invenio webpack run start +``` + +The file watching will continue until you stop it with CTRL-C. It will continue to occupy the terminal window where you started it. This means that you can see it respond and begin integrating changed files when it finds them. You can also see there any error or warning output from the build process--very helpful for debugging. + +```{note} +The watch command will only pick up changes to files that already existed during the last Webpack build. If you add +- a new javascript file +- a new css (less) file +- a new node.js package requirement +then you need to again run the basic (slow) build script to include it in the build process. +After that you can run `invenio webpack run start` again to pick up changes on the fly. +``` + +### Adding new node.js packages to be included + +Normally, the node.js packages to be included in a project are listed in that project's package.json file. In the case of InvenioRDM, the package.json file is created dynamically by InvenioRDM each time the build process runs. So you cannot directly modify the package.json file in your instance folder. Instead, you must add the package to the package.json file in the InvenioRDM module that requires it. Unless you are creating a new stand-alone extension, this will mean adding the package to the `webpack.py` file in the `knowledge-commons-works/sites/kcworks` folder. + +There you will find a `WebpackThemeBundle` object that defines your bundle of js and style files along with their dependencies. If I wanted to add the `geopattern` package to the project, I would add it to the `dependencies` dictionary in the `WebpackThemeBundle` object like this: + +```python + +theme = WebpackThemeBundle( + __name__, + "assets", + default="semantic-ui", + themes={ + "semantic-ui": dict( + entry={ + "custom_pdf_viewer_js": "./js/invenio_custom_pdf_viewer" + "/pdfjs.js", + }, + dependencies={ + "geopattern": "^1.2.3", + }, + aliases={ + /* ... */ + }, + ), + }, +) +``` + +If you add a new node.js package to the project, you will then need to run the build script inside the `web-ui` container to install it: + +```shell +bash ./scripts/build-assets.sh +``` + +### Changes to static files + +Changes to static files like images will require running the collect command to copy them to the central static folder. This can be done by running the following command inside the `web-ui` container: + +```shell +invenio collect -v +``` + +You will then need to restart the uwsgi processes or restart the docker-compose project as described above. + +### Changes to python code in the `site` folder + +Changes to python code in the `site` folder should (like changes to template files) take effect immediately in the running Knowledge Commons Works instance, provided that the `build-assets.sh` script has been run since the last updated image was built. You simply need to refresh the page in your browser. + +#### Adding new entry points + +Sometimes you will need to add new entry points to inform the Flask application about additional code you have provided. This is done via the `setup.py` file in the `site` folder. Once you have added the entry point declaration, you will need to re-install the `kcworks` package in the `kcworks-ui`, `kcworks-api`, and `kcworks-worker` container. This can be done by running the following command inside the each container: + +```shell +cd /opt/invenio/src/site +pip install -e . +uwsgi --reload /tmp/uwsgi_ui.pid +``` + +If you have added js, css, or static files along with the entry point code, you will also need to run the collect and webpack build commands as described above and restart the docker-compose project. + +Note that entry point changes may be overridden if you pull a more recent version of the kcworks docker image and restart the docker-compose project. Ultimately the entry point changes will have to be added to a new version of the kcworks docker image. + +### Changes to external python modules (including Invenio modules) + +Changes to other python modules (including Invenio modules) will require rebuilding the main kcworks container. Additions to the python requirements should be added to the `Pipfile` in the kcworks folder and committed to the Github repository. You should then request that the kcworks container be rebuilt with the additions. + +In the meantime, required python packages can be installed directly in the `kcworks-ui`, `kcworks-api`, and `kcworks-worker` containers. Enter each container and then install the required package pip (not pipenv): + +```shell +pip install +``` + +## Digging deeper + +What follows is a step-by-step walk through this process. + +```{note} +These instructions do not support installation under Windows. Windows users should emulate a Linux environment using WSL2. +``` + +## Updating an Instance with Upstream Changes + +If changes have been made to the upstream Knowledge Commons Works repository and the kcworks container, you will need to update your local instance to reflect those changes. This process involves pulling the changes from the upstream repository, pulling the latest version of the kcworks docker image, restarting the docker-compose project with recreated containers, and rebuilding the asset files. + +1. First, from the root knowledge-commons-works folder, pull the changes from the upstream git repository: + +```shell +git pull origin main +``` + +2. Then pull the latest version of the kcworks docker image: + +```shell +docker pull monotasker/kcworks:latest +``` + +3. Next, restart the docker-compose project with recreated containers: + +```shell +docker-compose --file docker-compose.yml stop +docker-compose --file docker-compose.yml up -d --build --force-recreate +``` + +4. Clean up leftover containers and images: + +```shell +docker system prune -a +``` + +```{caution} +Make sure that you run this `prune` command *while the containers are running.* If you run it while the containers are stopped, you will delete the containers and images that you need to run the application, as well as volumes with stored data. +``` + +6. Rebuild the asset files with the following command: + +```shell +docker exec -it kcworks-ui bash +bash ./scripts/build-assets.sh +``` + +7. Then refresh your browser to see the changes. diff --git a/docs/source/feature_highlights.md b/docs/source/feature_highlights.md new file mode 100644 index 000000000..9607e519a --- /dev/null +++ b/docs/source/feature_highlights.md @@ -0,0 +1,138 @@ +# Feature Highlights + +## Powerful tools for collaboration through the research lifecycle + +- **Record versioning**, with persistent access to earlier versions +- **Metadata-only records** allow inclusion of works stored elsewhere, making them discoverable and allowing them to appear in institutional collections +- **Non-public draft records** and **restricted-access** published records support the need for privacy during some phases of the research and editorial cycles. + - DOIs can be reserved but only registered when record becomes public + - **Access grants** for fine-grained access control to restricted and draft works +- Flexible **public or private collections** supporting both open-access publication and private collaboration during the research and writing phases. + - Assign users permissions as collection readers, curators, or managers + - **Sub-collections** (coming in 2026) will allow for, e.g., collections for academic units, departments, and teams within a parent institutional collection + +## Safe, solid, and reliable + +- Better than 99.9% uptime in 2025 +- Regular backups of file content and metadata +- Long-term cold storage backups (coming 2025) +- Industry-standard security practices + +## Rich metadata + +- Based on the **DataCite** schema +- On-demand instant access in a variety of **other standard formats** via UI and API + - DataCite, MarcXML, DCAT XML, Citation Style Language, BibTeX, Dublin Core XML, GeoJSON, KCWorks/InvenioRDM + - Including JSON, JSON-LD, XML, and CSV options +- Support for a **wide variety of resource types **with extensions to DataCite's schema + - including some that are poorly served by traditional repositories (e.g., 3d models, podcasts, performances, blog posts, peer reviews, legal comments, physical objects, etc.) + - All DataCite compatible and keyed to other resource type vocabularies (COAR, CSL, EUREPO, Schema.org) for easy transformation and export +- Acknowledgement of a **wide variety of contributor roles **with a DataCite compatible custom vocabulary. + - Allows clear identification of supporting roles (e.g., editor, producer, researcher, transcriber), administrative roles (e.g., committee member, data manager), and creative contributions (e.g., artisan, choreographer, performer) +- Comprehensive **subject vocabularies** + - FAST subject headings (over 2 million subjects across 9 facets) + - Homosaurus subjects for better coverage of LGBTQIA+ topics + - Complemented by free user-defined keywords +- Auto-generate **citations and bibliographies** via UI or API + - APA, Harvard, MLA, Vancouver, Chicago, IEEE + +## Interoperable + +### Standard **identifiers** + +- Every public work assigned a **DataCite-registered DOI** + - A "concept DOI" for the work as a whole that always points to its newest version. + - A separate DOI for each version of the work, allowing precise reference to a specific version +- Every work is also assigned an **OAI** identifier for use in the OAI-PMH protocol +- For other entities + - **ORCID** for individuals + - **ROR** for institutions and organizations + - **OFR** for funders + - **iso639** for languages + +### Standard **protocols** supported + +- **OAI-PMH** feeds +- **FAIR signposting**, providing machine-readable documentation of the metadata formats, media, and resources available for each work +- **IIIF manifest** for image resource types, accessible via public API +- **COAR Notify** (coming 2026) + +### Embedded metadata in a variety standard formats + +- Meta tags (opengraph, twitter, google/highwire) +- schema.org (embedded JSON-LD) + +### Integrations for standard services and tools + +- Deposits sync to a user's **ORCID profile** (if they opt-in for DataCite-ORCID sync) +- Research tools like **Zotero** can harvest metadata and files from detail pages +- **Github repository** integration (coming late 2025) + +### Indexed by search engines and aggregators + +- Google search +- DataCite +- Google Scholar (spring 2025) +- CORE.ac.uk (summer 2025) +- OpenAlex (later 2025?) + +### Powerful APIs + +- Public records API + - Retrieve documents individually or in bulk, with powerful **search queries** + - Return **metadata objects** (any supported export format) or formatted** citations/bibliography** (any supported citation format) +- Public collections API + - search for collections and retrieve metadata about them + - retrieve the records in a collection + - retrieve public members of a collection's team +- **OAI-PMH feeds** + - Dedicated feeds for **each institutional collection** and sub-collection + - **Custom feeds** can be created for any query +- More APIs for **Authorized Users** + - Self-managed **OAuth tokens** for API access based on a user account's permissions + - **Create, update and manage** works, collections, collection membership + - Retrieve restricted or draft records (based on user's permissions) +- **Import API** for member institutions + - **Streamlined bulk import** of metadata and files for multiple works in one API request + +## Flexible, powerful file handling + +- **Multiple files** per work: up to 100 files attached to one record +- **Up to 500 GB** combined storage space per work, allowing storage of small research datasets + - More efficient transfer for very large files coming in 2026 +- Attach **any file type** for download. +- **In place previewers** for select file formats + - Robust pdf viewer with navigation controls, full-screen view + - Text documents (markdown with mathematical formulas are rendered + - Image file viewer (gif, jpg, png) + - Audio and video file players (mp3, wav, aac, flac, mp4, webm) + - Zip archive viewer (lists zip archive contents) + - Static code viewers for jupyter notebooks, XML/html source code, JSON + - CSV data previewed in table view + - GPX spatial data (coming in 2026) +- Download a work's files as **a single zip archive** + +## Rich statistics for works and collections + +- Compliant with MakeDataCount ([Make Data Count](https://makedatacount.org/)) and COUNTER ([COUNTER](https://www.projectcounter.org/)) standards +- Usage stats **for individual works** (all versions and each version separately) on detail pages + - Total detail page views, total downloads, and total download volume +- Dashboards for institutions, collections, sub-collections (summer 2025) + - Track works added to collection, aggregate usage stats for collection + - Filter stats based on time period, resource type, creator affiliation, etc. + - View trends over time + - With clear, engaging data visualizations +- Dashboards for individual contributors (summer 2025) + - All the same kind of data, for an individual user's works + - Viewable by institutional admins +- Citations (2025) + - We plan to add available citation data from DataCite and OpenAlex, but this will be partial and incomplete and must be used with caution. + - Creators can add a record of incoming citations to their own works. + +## Connections with **KC's larger suite of tools** + +- Works and collections are discoverable through **KCWorks central search** as well as **KC's unified platform search** +- Collections can be **linked to KC groups** for connected discussion forums, group sites, etc. +- KCWorks on **KCProfiles**: customizable display of a user's work and statistics on their KC profile (summer 2025) +- A **KCWorks WordPress plugin** to display sets of works on any KC site (late 2025) +- Promotion of recent and highlighted works on KC sites and social media \ No newline at end of file diff --git a/docs/source/images/static_build_process_create.jpg b/docs/source/images/static_build_process_create.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f5b7a0c7f3b2913f10c1b1b1ddfdf4c3c9a352de GIT binary patch literal 392290 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%0AB2K>}w45R>G&;<-!<;l}Mdjx@id6Bg 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%0Ae~`vX4k-9>hb{?<;*r$af*nC=FU^gL6*fU|~% z!{`tSSAaYBO%p66W=Y66Jsm?YI?Mk34~gy`I};>^Z0e?h`SbrBdt)E{fjmzTpyQNZ zBN2IF=#bu%5&6+k;E`{k^>f6dI;zd@jb0~DV^uUid-CrN`gI*aorYQnlIX>pJ;(Bp zQryECvn+BAgLeGZXy@QVxk=&e00H8riy^1sfaVw#>X zekjDcnNTvaju`6$rn5jh=Ac zXniCsJ1D!x6$@L$_@B*E!G24P`Z(irR*%p$`fKclBkd4nrBnPlPrwZ~Qmb*M!GiZo zPnDtZD#M-No9vb@Y0xt{V3zZKNX1G2_Pk*@3zddY(~DOtfRede(p_=W@7t_o?y{w0 zvN?V8Jrg&?&sz6n3Ip|NI!X%JOmesGhwk~F4!wFJ@Ji@U^AZmV|K7BS%?f)TkuyQ- z)Pg%!8x(+4n=`Fg&8$qNUFnVNZ5`bG(uO`fasBMTGRjTGr$=HuP|9R)3+)jZboIm#;UedXXHs`w8Y-x13iS63$vI}$eO z%k|6-l(Nbk)+MuQqT@-;LpNg=nn{RUt;K@NU3wcm@iUBiEvzO`O=(Xe=H5sE$9d;7 zPqWms1Wmewsg&Q+Hx*256^P}M_)mG)t)m6n>eN&^i5al_xOp)#Yp)`zT|}YsRvzqr z3wXwDV$kzRyos|~j8XNj`%d^`@o&pHpRbt&W6DdqACitep*>iL5_C$3A5NeMzplNT^)gmdtz!lU~1H zBgSN+MP;46|Hgrg^2 z%=g+@<;LbNxpcc1AD2y}E#luZh)w^}wHB+Mo@j@aI?3e;JDRg-+_R^SCvVWW)=r1x z6LWL^y$!$+tW{2k)vwmraSpb_iRy$D!*m3zO@>%vplSW`_#5la3ofSiD#1D@5+3?< z`y~N&ebpijoM*otlk}djwKys9t2y9H1grXg`E7MJYQO0>z>iHG zOyZKKa~#Ev56kQplPBMd5!>qz-T>0x19wp0qo)LNhB@y2et8&PXmm?nk7&uMK98Rf z_!KA6HQ$WR4b>+_OWHek_8swN!UOZ|9Fq~BSH!Q_yJ~Td(AD-;JG8VlJ+sQreNR4> z`=)T4qP@6X)MhZ&2#2TPs|GJqHx$%|M;O+{_-|BxWEYKE47`+g+W^6No9W?J9$|*n zyxla-%1$B!O9a`5aQD+oZp~T_F(uxEn33jNPm1d3<#r|CA~z79%k|$$iDiqYf?MC6 z)jqg;tsPiKE4ezG{}0Li`o_6f0@M{2VBNWUr7<|SR^&67-bZ*fKH#|?FEU# z9rWNF!;B2#9};ldKO_*mF4M1le5K(x&rf07@J#HfbL#ti zPR*T4NnYv1X7Nk#%aT{UpRW8W&I=a@O80SA-{0bLli7DA^$(NVzqQn4KTH*nnNzV9 zH9DZJ%bbgJyYCnl*n;;zzaU%@^udbj%_3UULq99v8|mv%0c`FZKGL`f!;;IwkcbK8 zGZkBqD%s6+D7mvRlj=fy&+h~K>y2Y-^fDWiuz>2RE3*SLF-=E*AbtPWbxxLfotUqN zeTJ?tuBkzJ>3)pb*NM#>%WjF07lCO{rv2F(H|Uuh!&r+#dR9JakK8-}P}#Wwpc>f9 zFK{x8Z_KcRa}Rwr0fu|DaL}6ki_iLXRmo3Wp--Y<+n(Ed=lh@lv7#qcdW31+ua{Cb zKC`wH#E1^1A$7YfmZJ_J`@B z^@UD--&^bv8J09kgL!X|6PJ`kShTju$+A2NKI@9uLch_a1!ws^nK$NL7*DlnEO-h^ z4*)r(4#nX3PieyQzvhOf98sM4Cby06H~Yjj_DEzQ&w3rlsts@Dyt*EXJ}JodF>`tG zJ8$o21YxGq)Fr!NBGovNLdJyh0O6I!LG=psnWH}L%AsIz-Ylr1(9k_&_st+S(;NQU z-#KQywx+PaE#03chC&xuuy*>THdNcm|FQpj+^$7i5aWv)G$)lL%R<#W(k!E7z^-cI zXMXC8syyXo^45~06Zgy`%0hzK@}jeolqaehCaQ&@p=Of?*w@=+%B!@AgG zl~Fj$cVvBxD>7b|X=`SI?MLL=zFK=`OO(dBs*H@tEW<`Z%O0Wd3(;V_0kz=I791Qg zqe#(6P-m491Ko5}WSA?rJH9oJ!^m4ZoJ<#u;s_W3 zRNEw$!-F4J=Q1A^%nb4WjZN`?_FL^&1ug;j>DKLo6;4t=-i0(GJWVhN!j*DzW%0lo z(sRx!U3L?$Jx-wx5a-4d-+e z{sRs4e^)T5T~Xt(U@n(5wW3EJg`8Ilw3%TD@m0+OPzea&T&4EDf$mEYT`7IJtrl?f z7m+m7LX0Vy23P&aR&y8I`5k8)ua)4?qQcOMOe3S@G)@trv0f}iXR1;cyX&VoO2#Vo zoPy$+w7BfW+O@3(l0ioUsnm#Fn1 zYhrDL1E|$zcFt~Hrb1x*BRp81{jB39fK<7_RGs4X)*v+Mni#6|3n8%-U8T@d6?LN= zqST%ZCy{Osh@)p6{ZG$@j6Ke5OQWdg_?#|O? zPHVS(r;MUFP8b=5$9?%J{TvMN)GQ`?MWF7?+2px_n?)k6)4*FkH>fK7Dx2BTwoU1Y zw<{%9Hb2o(a`ig!PVzq_KEyDnG@|)EKp29kGb{^HIr>{gkgpPOs1Qu-^MU zRA-!Dkr>Tk)2GG#jB@s1Xn=&67D9E?$6Cqt6XKpr*sdvJT^J8eUE=}8ELlU-zR7O8 z2fX-)L@MlOc9Wj1wBqWh7IK6WerI>Gs_r|=QT*7l6y-NlvG8iuXWtqKyMck0}=|nvOuf!vUF6 zCO))_{bqxYkPeoCn)zv9!+IxKsiDkoBDMp+1r_}XB zB3gJYoy4|NDlfD;W0ELB=>y65dRFg#;0%o$oVkC#_lN?4`j^h_ra8ZO6cPu>`6b6{ z%87$2U17EGa?C_)GC8vgKv6|0OwmK*spK0WT_F>7F(pe=a_TV?;Jwy+5wqLBN(|T@ zJ1Go7AFtnhFghL5$^$qG-}DbCZOP#|H5#~>zZg=4>KgReHqb`Pl#79o#h+ttP}5rd ztDgVg24w$3t7==e@NIXGn{rOTO}1sKvTP^G;_vPC_oy8{EmUtM5;%xPa&wRB87+#4Vn%TC!aE~P zec1Y=gnAIbIQZTI>M&+q;&GF@N3G?Q*46FelsxJ2H#QW`U4Jp3J^D@smt-ZGg~M>< zV`ciD(FgA=xqUKb(}zXgY_zu4L}nDu%Q*Ghm9nAvHEcj`yu7)R9rggyN2P=OvGW6i zmMFE4fI>mmy*=^<_&LyQDuxs5?jvs=ZC*a(@Yegyq}ZEGnX^S_n+KpT`t22;mgaLK zO{&XZ6=WVOLh4^EI-%8c`Ru<3+Oj05_RmlZG^{Ygy}4aAx;$}DAKQ(wiSjcb|LQB^ zH*`W6ZWsC5z7UV?Pa=^F2a!#PbwVdn+B`OEie@h$a2NY>d`g4!(+Vw&5Oqq_h9ovr zxVs#-y_vJ8qoA$R1zo|0db>mBZ0{Rfi(xbPLpgkNqE6Q+ z-J*h7JH`x=mg7d|fiYZlQgbv7>_&VX&&6;-RS5xa;g6hJz5iAos*Ta$T#={m zWRI9&25gVW^t2?@CLn!+`)5+_t}h1I&HCJzPRw-^30Y3{@0iw(S(>&hM;>Y^%39E* zuOBy}D8XwFe0HU`0&O?9E7fc!r)W(gpdCUxx zu7I>a31-U3W6ka3;@?T^H4cbqu1MHIon=FbeNOpSDwyS|Os0q|8x4L)e_vOf7GFp$ zrX(biDY#amsp{jo+JvBG~kmHYMxl=VLghDlBLvGruWlZTY?mq34z6D|rLL z*)3Oe)Vbmhr}rJll*|IB4+l$29|A93L-S+RG`2WcZ>}7qnu*{1V1Ol|(zaYw=B*$I z?YK;7oWcE7mXgCuTiF;!Zo>9d3W_tCt0XpdpgorK(d$=WtlbdyQS)0IkKCHbv`+P% z_S1&Umu49uz>cGi_2oH#_Dr1eP!CGIaHEbuOH zf}4V3m&c#A%ztQ6Va^A;sy!R#5T0W>zmpQ^ap1Ot76~B`e)eDFwU``2?|pNlO%c{R zsvmjt1Gv}+;};;iyhAK}>4rTMcl^&bu6c>2FBw|s`$bgb3|i+!#iE-2BRjv*YUSJK ze;M7yUFv^pu@=HeBvMn;{fFj@|8bd4A6(rSLAX&;uP3KQu5w#7@17kurg*by+j-fc z;D>u8jPu}&u_A*%2zbeyzwYYWy5rO@OSjN!R?$6|1##G#P&clUO#cP_wDYxfGfy4z-~?``4^f9s7otD~ zPuzsM*)lQ4=Bn!Oq9vJx@85s?7RQFn;jF7(opldd#jD=&h;O<&{!BvijWnAyXM>vl z$=>|I3{YU$Ars1Xwm0FBob$Qs<>v_Te`^gtIo${T4N`9@*>TJG_D+i^9bR(<35yfm zsz9*K8+<}EI?IwVS$O~T%9ibJO4f(bqCdNvn}&`fA~Ny<{~-yvA82u1GV|&8v+t?Q zkw)v$LnY;T^slq`-!E|~&v~oB^8t|L4sli^|M39-*)2Y?e@H${^H)Z1FOqOQ!R)8%J7 z{rf3hU7gMPuIHW4Ej|T*eBJ+F3&Y_z{>-Y-d+0+j4uOr|G2ZJ1t>q=4>x zd>C4Cca^mEJ!F1Hv>xX9o9INsVU6bBlgWTvJJ_oGSlWQVU%FBO)=WD>K8rjD|6=<2 z@n5IozmU&1qJIoATOpK?%?Rc&($QclFY`P(z_#FRF{DY}cIDlahVioQ5fOc@4r_5p z-#Vdc^5tDCM>1#)*q7MnA{$y05T5JVN86Q4>kSJ^cr}g5-O`NcOR^lK)!Skms82jR zru(+nzf$`l)@oind4R(Cv#>Nr%nKTkMwM+lvD5*Fxcya_%;7MqkGav~sq1vy8Wm3k z;9zGp19QrLf1cFs^N`C7K(;u#VofmYX^yWv<_xd8I2q`$V;D#|Po3E`lw^OK%e}}G zH`(X#sg5`>b;60|sH33>Jnq5kEtnsT;E_~<_*&L+&K5iuKdLZ_cxqxS$#S5h?_2|Ir;G0z*}E?~AJkLIo`F4*@5 zLISF^elPo*p2*^oZeLmE{_2kMw=m)GRWlCMDEqZ~(NV8-hD2Rw7#{bE2bQ*kUAli? zEYk^;$kO+xI$LXRH7L4v1G5|G-&q)+UL<<8c)$2oLEW5R-dd>VcSMo(|KXKbR?G~s z6l7;MMrs{iHhlQYeoy}ygd243*o)UZ%?PV_wQ`8y5N)|q*OD2(ybWA#qfeVs(5b3_ zKmv#xUX@W{en3^PtQ&2W{>Z+7!XCNy^(U)L&hq&U!<)3iO;ZX$+)u+hguHl?ZTJiS z;3d}umf=7xK#i^tslapP3sYKqKc(W%{wT^sH{sZ}PHCO*PT>q!;EY|TKl0WeJ;t%Ba z{E62;k^lcM<-cqq^yCR{Tm|)4Z$wYT#?4bi9g}(hf)QSltgRmDOBEmzPqKqBv(uD6 z{=KyccLckj7ig1KEk+j6RQ>hHGv-m);Y2Y?IA6=13&3M4xJ*Ed++aNPg;%Yb%YmJKVF z{=bNO@2Do*t=$)2RP;r4LQ!cVO~in7={126Na$FRj-s^Cl#)OoAiad5 z(xjKrlYrC^ARxW_?yPmj8GEg-oVCxl+dmm2d6JPb?&rxpuQ{*ZWm`?K_5Yn-Pzu*h zm*#=Dh8*g7;1f*;p}}v`mzp_PIe&GkrlU~3F?GsHs-Sb1M@v7xyKw0}j{U>pnUm|Q zbsJ1REG;iexgg2XSo9D`c$!>uh0_EC`nJ*~0yjb8RuksTqodsW-&2p<>U7iQ#>A~# zCJUu+Yl)M;k?qFb3gSFg!grg$+*2Qiad)tBD9D-pqU2p7oH$asUHwk_bt}-ff3kU* z7z)st_+E#%yznPEK%c>WmU0%kX8dDC=If;+@p^@UD8r-!TgjrF8lqYGI?}C%;>Kya zdNuLpqaXhXfAintjT>0;)LrvJs)p7Z>*nEdFA7=2MRp))e~0;A zc2ZJd)yQzGoCCQjkFnmQzQu3rIRgXBbBkRRSqUwHjWsh0Fm@a34V;rB&da~?;tQ!M zzhc2<7)S?`M2K|#JUQ#$M}f_J7zs5`R=jkrtkQ_>FNW<(dOFI_qN>Lh)wR3GYU`Y! zE4uPM!EyrvutgS+A?QSI|9+*MN~fCfVm2o0U(_-e2On#DhcycpO`DgePtV`Jf^oYj%^}dVAFNX`|;R% zL=$QE{S)|Nlgj%1>v4tSogw3}^yuyH_xjp>SVOh#sx_~-i8ei}kJIXq_=NWEh;iz+ zZ9ZjuH8pqUx=Puyz6W!Q6UlTr(&FRfrnfv#9a)C^VcjRM&z0qI1+2d3Ed^*%UP#ir zzwuK}`@B$AKQ9P7vcc?BgCAPmwKg!iEY#^I{0vGtN-oZLNS{Yk535H}qcC#jH()%` zX>FT{7vnx-^!-N7M#nh}`(bn$WK-oNT`+%B96bd~8F?1`)~kWgE-io4#qu+aD)Dr4 z5%?@9ntx4C{2HkoApe%F_W)hFq^3EKWVVym($gGTK|gNJj{Ud0hNUu=9WSrqd&;?@qm&&QrRSTIp3zj*NJnw})4APc$j;RU*CA^$532Yi z)$!%6j*j2Asu;MxMAh$t6^-3cBih=IXSJXHzewM68kH1k-aMk)1bc?kf{e>$_w(s*8*Y4YfPot2jmT*k(Cb3%Gx&R%b?mH z{uL0B{+UCgXK|2KL*%w(ysM4UGg(4BPsip_A>fLC)wHI~xPHI28l?(ulIHhvY)v&t zok9R8no*%6$M)WKBic)8SyQ1!v)42tt~SJGxpdK!ZZq!x(;|yLxe*i?V1Dz(ed|V8 zUtl4B)=A!^4k4_054yPuskNoO*=CA4Nyr1u@e5%-EoD9$X?M<#Z!%H4E=RkT;3T?N z7I6X`(k+JQ9MxN)Jr9oM4th_n?mXGB9q?=XiDXgkh#V$k-joz}Nn+|b?^4zxhjcGa z0BWM@SO$K*UI$)(Wbo=+IVx2CQu&~xk82RA7~NA?I*7(Kp+Li+)PpEGum&Qv1L(pGcY@DG>wn%oJ+?b9G> z!13C)W@Ys7-90_w{Rsu-_*xCf-i$AkU2LNy|NVGp+nI44Q(K!b_q6oG+~HA7Mo5E4 z{KPs3hpFZNNPo(WZ#IkkD-N1Dap+WB*XsbeH<5OiKZ)<&+3fYE9?c=Zlb+I`H%hYM z4F<4+vV=#ix6f^=zfaxht65xZ*h8ROvE zqX7urA5Ar~Mj7%PQN6u|tGj!9VRiL>x8TY@^N0M6c=}}0JNS1VZdn~oSz(3^B(3;v z3gLW_V#}-pjF=MqR6+4DX~@3J1UZF4-bB&6Z_MOekM8| z-VAiI9*5@d03HjgT@NxnbM_C`pSgc*j%YlfE+*aDRxg2hA!gvUcN?QB1w^!wCwVuU z>~A(s%P87u2+p?1r#Wn#i@z4gWcmd>mPM8sFA?kuXlC1)LYX(~`E6|{G?o#^;X$?p zjNNnASbC4=()mqzz}#Z&P@nn!USh<@!F{?5#9gRVoheWw!e(PKFG1PK+f=T^iNTA` zCUOUSWxH*M@qy6wJ;GF_yI(I^BAFio(3SVGvlbxdJwP)$lqk;kXMqP7^e0`E#-lgN-VR< zqadw>izM3&Jr97VvKUH4qlsXAz-mYpM zL`$EJv#vSSs@Jdo#ejFPMNkR@)lqXqqXDs6!e~7y5@^Wgx?#EC?-nt`j^~Wt=D+!S z{3FSI!@m+mm2i3AFD*lhh9N;FGmOp0$5_?`Z!eH5&EKvJiI9)#aHC8Dnmv@7hw3W} z(Z&80`Cp00IQNAFccPSu*TgS@afNjOHW*VsH#NXky4ub=?Hp=6!YSSMtPGn|R=tw} z=_z47@@jk|(Yp@d*I&kCtZ3|Q%sxtTU9&bDOtTskKzN+x)H7}(=4cS%(%whasvGwS zqgM<^<+vu5XH)BG>uc75Dbul-7_89bs)c9~MbkP6wk$ z)_^P7xsUg2)~8m3$!;imAnyiE469E z*UM@UDDq*DL2Y%g+PRLlxuD zaYI8h`3{?;8`AvDl(*M*Hr`qnItO`N;n|gnC-$D*Wm!FiNG=Dz2o)OiTR{NLCTLSn zwLr%9Mm?tD#0U)%c^c{y5Hd4c9fC)sZJ-N}+_tQT!d4mwFBarz-`4A1ce@n+<~gl4 zX~Jqy^UJxJ6tnM5Ch@|`b}s?pvf z*4n9mN_dESif0QKp+oBNK#n>gBCBgQ9`Is0SSE{>h$}C^So_6UXHNqfF#>a<L=!-C@`!ytp;{rA85iTh& zgBybDquFb)*T0D~08saY!%trj!xHOTK0Mt7)wsMK@Ty2b6{1}X9AU(oOH2qxa{Uaf z#pvt$#?#1js;-ZQ2NYLUK5Fd&0hd1+P_)s#z1}xVDw!dC=&6~9QOE&%#yyh_xGbb; z5gzZCIVaDNAfOD-9H91T+2Y2Yjt+VD@#exN=Q|T!uc*HFv63#lN?fQxNrht@1d)4J z#HfHn=Lx@s7k75}?N<5hJU#Qamqju2WPc73B~0?lPn}G!qYhE?)qsZV-Hm{OPHxH_6;HUj0`fET_(r2NAdM9AsrgsFim%_^jdoR=lfB?xOT=z$@kYc0g%LWka9jJFLE zv;;K)k8EGyLFxj}G3 z^YV6SR>txDEC7OLWNQMwfee?QDDWFg3b;HD2e`R~l;60qB=eupB`Znu+U16GYq9}c zql4haGoYeaMB14zGOSG9>nm!l_*YVXdzq56sh;W>Jb)M$h%iZiH_qn?bB)P16Zr6?OTZ6Q z15?Ar({U^!XQ<~FSV&^+vhyQ@1Dzd4QYEYb8Y%+iN$QeumvN*BvrJ7~z@83XaWoje z%K5jTRM+kES&8?n`h^3+sksv@GES~Fk8PY$lyh9Ug)%H_(_I2K%nw!5$Xl!THa$`ej4%W*uVHcq%=i>+_Cyy( z*V=mLbAk(qwf;NPxsvJRsI>GBCzVsd*4>_HQp(ucKEn{RS2_2Wk>QGF3~JWG5ICh< zUQzY(E=fU-xULd(#D#UwuCxp&KF15ez8?WU*$7Y!W1bfDpm=H3uu^-!Uyw$$!j{gm zrPtz&q*uu`L~;Df!@T0=)pOrR_;)zbd!57{b)j>+ zqFushQl!j=+@IC{Pe-Xf7Dk1+5F_P|z_xxlmGs^{%3Efy;efCrgy@J(XUt6z4NqP*N{Cbz6U>l@g5 z7Q&C2xD}f%X(FtPOJ@^B-s$tN-A7;U>wLt>{yiTcK+0uF%nXY$c_-llQ+lIROt2go z(l%4{(Qb1SEa?!98wmMafTH64M!|+{PP~*3UN-jNMbq4C4+A>LMrP1PTQ&2!L&n~B z1mMS}&B*uoR)ZR*@J}+rM!R}Zwp!gZiy#Fw(SbmGl}&fb<8p$3w^jxv+?^iHhb!NX zIIBBA;#4abRi4Si)SVhh@4}+5V}G>W`LeH)uy8iQK_aP1=dpLdFQT5bUd+QO-=Ug; z1tC0SeGOeav~$F)s8fep_tEa9yw;wV<4sTt8bIE9KV~~J&h?~SVg5DZ*9q5Y1p850 zp^6IyFgs&HL!vH)o0(V!;(M)4q&~gx;bBYse4Vz)sb~9~7(S32yo>0+V^EX6qANvm zQ?973M#U$}M&@1S425@ zdmBNV_Ki}M z=*Hef;j&4#h?1(31d4R3V1u1de1-l!J#_<~jfWJuH(vpbk6 z@_h*E;>yjs2(1}<^8KR*RU9BT%-_u9Leu5WRNObKzT@NoxO_ipp!3yGdtL5W7MW26c!!1!)%3DSnH*Ecr;uCMu56q6 zd5XD&Wuxq@f;|in@7uPOQxJ4Cyd)%T&W?d}biz3}JpAj_z3}DLiih3ZlNeus-6kmQ z;_gX`Ld4_lYV*-_n}d=3+If}Cr`5w1eLU49(R|3=OKXAx9p$G$n0H=;J!~2suaU4f zh)2iz6LfHg^GzL2(`mi)YA}w>`zrO})2P@=n?CS*r`x6dz{3GxU<3zW51N++n-diV zsGCd%f@1l_5vv+Swzj+$Ako77ysQ!U%PZSPWJUC@zw|Xv@Ii6)|?pf*C z?4c?e3p~zR`H$a^5lhtOp3iPJcUGGVCessL=}B06{ltEacSz>! z425oPR&pgw?j#D9W^`y<6uP57q(Vo|w{-#B*4>k%qz)UJpba@uS>`~ zqbf)%Z1!B!0t2_GQQNJ`l`MtSgljw5DHT12JYA9-yDYKQIUiLY(%{T zF|td;g-5&H>pL4JJ1*E<_ohvz`a3}F$qC4jCHh6<=ID=&fR0kfhq!SMHyza$Jxs79 zU2`grj@zVbb)6BOcBMO>stGkP1xlq#zq0Qv8<5Rv5nO^eUOe{~gWy%e4?M+?o5S&? zuxB!|EWS%Cgg$|IX_0rULEIoXm9CYhT4%ObmG{)2i$Alr z4!0Q$s)c#g_(%pN^0vCO%yHYGhQ0uwb}^3Au=FXVs*;>HB)z8+4ge|C>s#B7s z<5uDj7}!86pZ(^|`7~D7CVVhWV!`|LCU@C%yWHh=E)Me@0+)?;KP)}dFHyOhO}_KUEZ;f4qe6qCL&PD;Gq@1>Av0TYA8b!W@+U=p$xcSg(owgr2)L4`iaL;Yu& z0?y^jFl)|*$h7Td)AE&n=g13{DvZqaT~R};+$u^^UO;-!1zGbyr3yS?9A^2!Ul(59 z%wH|n@GWs=I-=NrlEozfc$bf8;4yt*aPv&Ym&pBII;Lg!#2~t}=yOhD9Ln;kz)Gl} zijzpN1&_FO-EWL?gjGx|NTYaP#yYC>#>l7~|B#^t7e}jdW_ZQ4*Qic|2i7$mwVB?5 zgc0L9{(tPin(Wl>sO=@5jqK8L&36@s(Q9nmo{kqNtLOH@LLB~+uPVG^8`cp3rPT@L zUtYGK<7M1$)?)7iw*@WfdjxSCO@2K7ZD?p#*OByH{l6G?EJui{QlysrQ8Q1JD;A4( zluzJEON-l{BY?-upr>@+#*G_JDS;HZp49U%Ub_YNdDhy>PW8Q+SPLYhdZb%BAl2b= zpe%N;SOXREUktYdBX}758)VdRq{l0^g{~;C{J>UN!`rSo$9dZ(9fPM^t>v^lhPR5X z#doQL*}K{qVGXD8VSm=$@5b`Sv&9bZY8Za$x+WP(r`?z!OVQmp_Hm=LF5vOIm66l1 zgUln$JP-k21NAtmGbWZ=Il|~ZPb{BggTc1l>18uNSD+(~){EHtl|I`M7$oH>)&vzN zV~g@?d8U7@%?r~1nvBZQQ}m)9+g6eut0A@}^SyU2719&I?W_PT8ELG~fa(`k@Tvm} z*UW#8WvQck)1jMxrt}`EPWk?Jtw1oCh;K*>_4&>e&Oq_dD#eabBDU{nxio7sI-8?g zO*m(+#j&uItZ1eZoe(y6LxQTUeb+u!k3V}-pd(d2+=64oXQtxx#vij=jmACcQvjD1 zGhUD0_~Zgi@>)npCSeK0smUSSU;o;A3U7;=TdZ$4?YPA^t^*WDNyfD`C^6?9pc#Er zR=tucu%!>kTrSx6rE3!pL=+T1F%CjQj*njmAwTNK6kCK?!*L^EMevNY)I=>huejP+ zNQn~6l-~Eze0;uK%Qv?yYgZbMb~cG>OubsC9KR>}O!s(aeYJ*w4h*f+5Yl%n$~1U9 zOvS*BX`IUITEVQZ@K~BygVkwE$&{+6LMH~#)DK^rRu;hk*D}wc!c0r$BsCj_M<1mahH6_;*VLC$+xuj2*vqkp!_=7K@7lm zAkuY6`38vfH2GyyutC_lM)j)83OnDmdN(f_xycbB{jEh4l6YV~ta2})j}6SF=#~&N zFW@8qqx>u@nG{Se&NFL?b9$SKgin|$6|XG0lDeCRT<{~-?zj(WyaH$c*ssjXrktri zdrAdC=vDNchO17wbx;okuwm2E!2GwVe37%4_O~XrPgcP+0<6{-+@OvdTn>_xa5!|X33QwLTo0k4GsFVJifbJ zZ@_xbwTsq^e+uO=fBfJ9r#!42F#C1QDx`s(4XoxheI;2x%Onh4V{Y+?B>ejRQDBZ( zRCT;VJdsT#^^c#RM4&OAHdBXem#tgZ^et|B+@rsv>#D(X)5ELPim-S!n|9a`bQFHm z!lJxNNlAxq6$$r)waO)^%?oUsEXoAL=M~|rBnV)i%esM^Ym4e6tL|SF6-f`@KJElF zW87u@9ey^l?2!^qYnSW1_d@!V_yY?&d%w>DB*{#U({9@lSS3(a?S7aG-xT(5`K6vX zE@NU;I-04?#N9;{JzX#IxBN|`H$ww8B_#YXPMHCw2x`v?g` zpUa0eo{%jhUDk*h7GOSWIEQ?;{Ld!bnCa(o;A-3f@b%L~Hr{EYcVJQpaEiLlVfKA0 z4J#TH8mIQH;7w-{Q`k|C-0oP9Uun!F6kBh2F(HY&{}-soYS?7|*6?I40$S>y+-qc- zU|YY?pJ=ID(Poc%9eAMr@o`n-{T1Pj`-=cuDgXHJx#wn8ZI&lVwEC|7pttq4erWnm zOyx?<%j2`MF{($1CrZF~HiNUxoi1*kYXG~>+?ZXSc3VQGiT~CqyE~#F{xkT=RKHWp zrr(9iCYOt5;P51zMS{>&q3WT$WYuJ(tO+hh@ z=yTmUfb8Yv;3ezs=5A^j0Lz|MPJkyYL+l6y;z&nQ(Jp4O z^P`f#4#+uE-}%u3mtLZ^yG~8^;|?V{B+iw=+aSu9v2+1KCWMVx%R774GzFNV6J6z1 zGJ`^itB5!8=j6atN|$!-tZy$WN3KKc&cmnnT#~{f9l!UQN~Ho%Z2CaglqY>rl{rRq z&~^RLa7A!;(HlkO58=AX)%~&v^3U`8J|pkfv3pg(4bMD1!{9@5XQEG+VsM7}+L87^ zaUA6v+0I=sfLzl`KR+^3d*dU9;$;;E!F zQCZmGD$gb0XzE@)R=s!BW1FcQg=VoBHT>ZQn9ObJn23tXxsv)}f*Hs^ z5b8?Q)s3>{NPA@Ompto`cLrb`^CNjBqN;gyoG-kF+B`rc6T`R4yc$47gYNF*Hfd?a z0>YVYsfWcLHBDLOXq+O4O5EmJroy=u(`jk$iv{RU4W=V~XQWe<-Mq-W{7`{2B#yd` z-R~=WQ^!3D(<{f4)8l?sPqxm~V?;fe<|cNDeGRCcuJIH~%{>SI+@eu$rb=NrcPM^? z0KH2)ZP(~pUW2H!^f{Abknq-S`Hm3b-^p2B;44(R z(nt?%Z~tTRn!rt*GemSF(?kz4!oZdhR%`X=*MQ;&cQU5UG{Eu0{I3K0qKugB#+pT| zbLGB>K*=aVO9p(29~;7G@_E!twJGdr9#?{Lbhf~)5RkbNj%F0E@jFG{JfyOWuk9+lgpJgqmB5Z;ZZHa>cx3esnVnQwfLxcc@8f1p{N1bJ_~2}06snm^l4D< zFN*TvemRT9V9%22hn^%SMTHRa$iOy5&iVxJ=jXQ-*6u;SLP7g8knw029JLbk>_`$3MU>wBvG>wmY%%mj{-I5r4C1Tc zXMB9L#PlmYxVtBW>U|9E)eeo&9U&-=Uheed9FOa$wW(gOAA2|;h{2Y{bUH11EZnX> z%?y1GSFYZG=kE@<8@Gm=?vydMNgtf&b^T8B)3EYV6!4FG{~PsqXi@E`y`M~EeHHdr z=b|qFO>mydGR-zOE#D(q{oxcEFQQuW%$mo2{bmVGz{Jk1YmoE8(bcB?O*Tttdk;UC zkw!s`lLlNse*W?%-79ato2+eUh51Ntv3TeIbBpDdg*n069V??)f$-lc*YL0}S1WP9 z+37H{c4pl&3WZ_U2!m~-GWJRzJF@?nKQHU!B;v6|HGOopOgKEt>2?5P-$>T;D>Iks z?tb;x#=!dXkE6H7x0H;#2G>;G z;&gZILYu3N>~GR6wrB*8BYMYW@&8W8g@fa~aA|N^lH-1%T%7CYkIrT_xw-j@W$#jz z*S=m5`gDHXBxq?HGL9O=J!p1QsFe_i(H*e3>lEV2&u`h^`BF&;&+^R!^n$X_4J>TX zdp4qf9fvJMMK)(eDvjJ9%SIq0n=p-x&1AhGyS*HbzC;u0;m6hnl%m4xBcl%(LSG{p zmR% zEZTni*Ug#p7Hztqkmk9|gsJPOf|{e!>D&u1;IYgGL9KcbGN)nB=0aXrLSM~I0?d*6 zK`&zh-Ej%;z=pq`l6wTE2gnFYaVRkWd`DIML_I(>4UB4fulx-uk@dzGhm! zJmMuj+Gobo$tGi?O$XXd{6`%L`eTLy_vV2I^4QpIs>H3@aXmH%c`M4DJ7bEGcS2A> zFF-+uEqs`vfIXS9GAGZl8z^KY7neYtv1pFlO_sb*828B)&rDdqB^%2ae>;Y^&cfz1 z>H_qNRDiV-%JKfLQB+?XY!iqiW63Rl)8<6X;tGTtSISn(h+8HB|+sKV2 zOACNPv+ySbR)&z%zVXBq4ygr7ak1=eBPCq?)m?`rm8u<09l41GkaG&)^6`rvDk?o` z<5g^89JMK-)6dG*`a-F@SA(g)ZLhecO3iDizbh^#1k{uUz*fOLr@R+ttsh-4Z{hiV z@Uq!Tj_;sGDV=J#lr0)h<`UrqcB%C*Ga}E@ulZpa5B=$>xtH!p$@6lm%D5SsftAQO z!*vE#JqV$WfnlA6k!<@t`zqlc0CZ70`o;6?)8~^xm#wmju%o786lE-TK|`;nDAbIdd6Th)jJPm~vGPPt$Hmuv7)?!3iPJ6c6_FsGn64{9Bl<1^2H z^-wUYF*~)TEQ0=GPCQ+UL64fP5HbVZ;yzBHQRun^`GKD~6$w|o#J5$~HgtFI%)hiC z+c=k^BUz_VZb|w=pZg}bIfEYfp3Qo`ZkzXTCj`{$7qr#8VOgf~#<0pKFDB_}+~qHC z)e~enw(H=B{7}YVuIcKJ=Ian!Fwqtqpxq&t9s^IHt+}m4W&u!=GiW(tKP*RT_U#Ii z<&F#Q#Hh6DK=GH7g3Y}E@a1274B5oCkSkwGZ}t&NyfhOG= zk)4JfeI`QZvMPHMWEh?YZwo$u`v>qzumoRN5q6juYmS{2aC&Vl`rY-G)6Ytzp6jml zZs#?Xc}haWRZEPOz-<6`od+Ae&OA6(_dh>7XPYV-SKT*LK?AhN0+B%5#-6_C%U{0j zJj~P6NDoEU=9T3GuW_yIZGI41TB|2hLyXtM@jOFx&nZC$!!|GjlQBe@mUJ2=~`bp6!`NBxYc4o;P(!xuejW-ghY zJ`lG(+mndAj?%Vqd&zx16!i@nB4 zPm7msY`lHO)wG42`{602@%50ou$DM)>xE#%RtDqoMF5D9{d#3AtNdVsoam<@#< z6qh4%Y707bRi3|g-VJ>uyQ@B;Mo~XoN1FJG%{pCNh9hLuZCm8^`L{Oet-B=^AnIUl*B$Vx zp|;6|wl+FFs6$RoxSqwzK+$xx*S9|;=y2O<3X;bc8}BmYa`?N>?oKVCRpb$|_k4D8 z!Mx*EKaz=KN$peV-QFXeM!Z;G5X@-7*eYJF zrcYo6fbATCMdVCvZKrHGj;I5eYnC+Dk&b5?P|23su-%FBa%J90-D%z7KUI<#;N3Lg z*?G~L`XMXpgnWFMT3OVf=RB&e5}s}ExfFT(N8A4)vF|4%!D0jd6rn0dZO~C;!IN4pN2Dj=1YyAg4Xq$m8MFPldzqpE}vhj z%6xw)f8ERS(d4BBq&(j+AL}t38J~I~5HTJt=F*9oL;X5dE0I%f7$11N{9~fF`p))C zJ)^_qt1-QhuqR-}qxx)(c7fy5Y|hw0?>X`L*5lFe(t?5pk3^~ruioo%%E3wNfm;up82c)VJn339 z9c<*etNv$MG4aUb_fBX3EiNjC+asir;mI8cM``?vuY?6fQ+$NVZ8JP(S6RaHp&i?w zpH3CK-0>D%SGKFARx5+3^ZZBTAk7K&c5|Gni=IVowdv{F$(+bYhs?;08{1;%+6azM zs{x(MO}A9&p>8aVj;iK#H-4fo=yZCw=f-qwGBG;lmXq3v)u@i5qi5VtTjZUua&hY@ zu{(UC4-SB9qVbDKI&=X`?>=km=d&_xv0lJ+k98fQqLHGWcmij8kG~z-y`DFEE%nUX zp9f3KS~pqMb(deasd`)!3R(2!|6?wq&RdlZ$^(hO`uKB`<3j|QZN}-4qK&gb-%oGY zHu;@);SohBOifS&VHw@FMRU`lm=;A zbE5-|4GW~5{-dslXp6sy{S)P4b1`DeN9C6|>?8^c~ka_}IC-1w#e;c<90Y+v6l z8}epK9xsq$fVUZZK##?&RlCDV0Y`T4__`eD{9i&pz}s%`r*Xv9fB*_{3t!q zf~WJ9)YmFbLZtot56`m4Bnnzap;uw+pSm*QGq1ig$q0L~th!^1 zZhcnebhXZ#?p-l^d{-?6SR~p%XY$x2Gx^7jv30yz@TiiEg}jbhuG?#QT~r_b10u#z zBHQnzO8~CBT;OEa`Ep#b)%Rz}H$mT~KQH+RRzK;o^e!KK{N$lQj@0E|Cz3I7moXgA zGJYfGPpE~VkwR~qi9)50qM>1@5XaT{zoP{Hero>v8+%Y4WmKh-#Ta@~N0{irF&1K+eROXvOZcL={a#RyZ{ktxQaWT{SW{nPW9rvef4S4_4X5;3;1KS&9m zKX>*v2mb29aI-j%b&Hp}Y&{}kfIW>gfy{47Oy~V47)1(j6W&?|KX!_#5v{Zpp^Z@6*k5-AJfI<)lKqz?U5B z%4c2|W}wfu)bEUQa1ZQG5%GFvcBLmv*d^C+&5wSG=N_)0R#5rcI;MsHXf$BHG%v62 zdgb%Dm6)58WQCs60Ha}oSF8xB_pZ-l(5)tnA5#i&Cfow*`Nyy4Ze@)t(q(7RS-+(d zhN4%5Ie{NXpLnn107#AtdrPZ}Sl6a0{6R<&whI5VyO8M$R<2*7)ZcHPieW#6 zDvrB0Y?_aEj45k`#ol8qofF~;&1*5n2b-1^9ywM09wh?H%v8|nWK4IqfEq=9)5*-< z($862XNmpadqw~8oB!`S%A9B6Wu9rhalXei;=K6}$0YOn`#SucX^kxSBPfuuUk^-z zUfu!^J{i^#bv^tX3W?a#_h2X-t2KrPOZKeEcF1sot4TNxv--8b8TzO`OKim0`tF`x zPF{wvPW3HH0f|hGYSV5*E(Pu@tU!A>UnX>pIl-ctOw z6&HXoG#+p(^9?Y%a_P1~If+T}IXhb>>+C`5?MCvHM{YwAnl6%ewzN;=7Gcw{PFy$W zL*M`E*LhXo*&n8qJ^u$q?_t-f1p4yGoY5iA+_-WR5&4{--11njp)yNqTrKH1nJ_;I z5?>Lj`ygcP_=M_qrHPr9m6}LABx;|Ou=}sW<74=0lJKm6a{OkY3O2=rZQD-z> zM?bYXr@oS;=R-MH0mSUqNys^nJk6S+fIIp;R_D}4I6)E0im<;Ok=fT-UD+E;i8%h) z+3(0Xk!g$RO9@n2iCwd7=k^@FQT+L%Jeo#vrcb?;i5{~xl<05kS3DjNwETNIW^??I%{o-Tl>E4B?M!zrrrSBd4d|(^on(cthocblO zVy!N`V#{ybpZqn5*Z z*TmFr5v^pneY-uM4plOX`ds)_?xFq7?$z5wSFOGQSxJMbpu1aI zRUpT`FIG0hw^I1 z_)WmpUkunQB_H*?~ z7Gu<2~z(JXg)RdN60|ZUREtX7fBUD=v6{rA(xeJ zta%N&?zAn*bNzX&>25uxw6s{4);1p%6`S-g?cQu{1T7Qh6^Wb9rrN{%P3v@#`usvt zFauLo@YRx3K(mpeI_gl%R$67s+-yW~-OaZ4I=!$TAT^k6e%^&Bv*6rmHv3Y z$BN&EOp_0hhgaG1r0|-Lz5A+Eb?Xcb7cmYK42CbJA@%n*wrRDtsfCkSf_e6p&{b@G zG)4`itQ&Y(ha%(5Q!RB-V!hx54R`|c84m7LMB9H%Ft$^Ti3xsSZw6NLZRJ@CO;T3G z3D%2#V*XLFexs-i%yU7hT(T&yIDVHFxBvajL|xF-wI30Joqcunl{@9QQENhi_w`Z#h5Z}H;zmYEknFxi~B*(mA%NOO_l|S8Z88+?sta77T_17H+W>wr<-Se ztEyAZMa4fE>M)_iQiBB6*8|kUl6@Q0uTLuNDPg6o%Ytvo&kK5Hh}xSERRX;*TwIA4 z|K=Z%`_~fn|NJs_&U`wI>KBA7XK*=7=SSKmkX0mZgr9~%>9L_jUS8^RS7SSOfU2)5 zDT`mmjB1V{lO6UgyM7y|1_k9_D>W(E%`3|}$&aQ-=IU}Tr~lk23<=;8%RkeYWNA&m z*b+hX;*&nB;@D&{aE)o#!~s{!Q?JtKBv6zXwzoKyn?*csPW4%}*Gk3y7BR)w7H1!M zXRZ7f%*Uo~*N$+1F=Y5hPRee{SeS^?!50JKIq~!=d-l(k?mGs? zfCQV0Vw#?lPt|aj#iPxUExG)6LlhYCncBh&iv4XV^R0_pKgzNr>(E)@E5etgy6fxf?S?;KSEAO}28I$MJzSHX z%2}kM`dd3Cds<&?7B$xMmrpz&4r02CcqRgU_&m^~Rbn^7js|TU(Lk7uYF=-6Xj%VJ zdsB#Y!kcjs&S!G3vY(7#TH!l#Gl33O>;xMpPGn!DP8W9sX`i?SyY+Jiz%QE_rLA#r zgf`KossGYK_+Rj{a~;lUix|l&6Q?G#y^+eb2TX1Xuj-^VoYqT?uI{aaJ?l!N+d6qt zs?Ci2`~F7aW&CrDmjrKyAgOM2tTj#viR%_G9LbLRSKP z5{r^@3ko*B8S&8RJ2QYE3_gR6w+nw2Rk{5>MZ8rTjPI-aD$PF5er+iUmPLdQ*yY5b6C}jDaiYiXCV_-r{=xq57C|-~x8=0yfkYVQ91?bzK zph(~QroQ4wf29knLgY+C{3&Ex2QqweN#fl5N>F^H7iIA-3V8g? zin3A5@*45?+ueC*_C#muK7idZ=9s=8eXVU`my<5bUpA#@Y;|C&&Tj#n%JEZqq&E0O z79nXH6!?Ouq1kKwH@bBHqq{Y;>8PubRly{LA>7pb3XI!P#&)!g(P!p2KT3XJB8oha28-)Y*@=%HEvJCr=f_ZPG&pY$O^~%R-sy10yE;HL6Y8iBTR6p?n>cl~uRMYZApGKh(O| z!6?UA6dC=~i!EuHHDk3>evf0f<+74fCGN>^GB7i_%nW~MdaG{(8WZ|ylqDEVZl z6H5e6o42hs2#J|job-BF#E%+xYJmDTq8)i0eJ%qMvR)*zx$3jleC=D{Om1J>u)O@7 zujBHCrhKm6y-Ow!1s`3RFiD4q=GdRfA(;`x*S%&)VR{lo_!BTml_C0D9jJs(M zD$zaLeNUCIuAny6b^HqI#4>qYu^84i(XL#=(XH^skDcn`cfTJ2Hh^+dRA}O)wnOc3 zbxP#xOUo`FoeE;_NXx`?%{reuN*xI{@tx6<70XU=SvpKU8o#3!TEmjChK(UMhuL-& z*KjOlOi`Nh1%Eu9wOg)3v_lzTT?MuGGsgu&nJaw6#ObwkZ##3&DxBmBy!gpNm4#;v zSKb)z;Mdpdk7a?`@FjS=J^c^%^`hrTn~IPJD+Eo=qHg{p+r}<0gftY$DbFL{|owKrW;8vJirY&8V_6kGw_*&+Q9SN4>;cdS-r>KW{ky`fm|u#tCx0 z;*%UfDv{$xK1C_%@AZ1v2l>1_kAu$j-hwo~4320`51{4#%zi4M3v8TO&eG=ZsD>&! zC5Xy=%ytUKQ6kT9^~Uk{ptYSi0LZa>APq9n>4czHh+gw8o@8$49%p_D-!l zXdK|;5$ZS^t0G+1rGTah`e|GXRx`|nHAZ(1sw(`w_da_M-eI=OHB-RmAB=H};38eRRPYLYDrrpN0k9nTPc%V#NNgM- zeM@&@U8e7MYE^b!J8gtlvpOB|hE=3yVf=1?X>KB)msw}8L#Ub>@<&48XO zf#y{V32aq|+GBQCVUKw3c#ifm&YYXl-AO2nl552JT5X*^N&(Ud3twEHkPgNlH|nFo zHe4s>C5#8JFS)#cQoPeNY4mBJveGhT&g@iFKd87Ij;#gU$Ra2k3!nu!3z#Fgn()S! zvBFGF`1fM+|DnS0r2#uKlD&GR+fh?81m)>9g54@j3^N>_J@H@-j|nrM8B;0 zwnz2Q)sZ-D2DLgwyi1|Fd|vVsm5!NbgiG=Z1RjcZGll+Rqp_!Fb4^)>&fagKL0Xy<)yRpqMy)qijcc_y*XMkfLrRRZ zTXyGx_L8aN|tP8M>X0di6Rg#QunR7M5{w7A-5p)Xdf@xX^M_gkwG)Ft+lYZd9bjv zbMc)0T|oCl9wfrC3c`Nz6_JXHIoaEvambf!f}_{~NYN8m=eVh#jLH~!!dx@^H5|d6 z8jnBy{ea6qOAl#P&caDrvK-*=f_CF&4(Gh z&)K^{0s*u{uA*V`iUi_yDqpby*YDldLVNY_NY<_m%68##@0ajF^=#v`j3C!0 zwgCJc*rVX!adqt}knG*=M0QFSQ2@WrCk5OXoS$zASkW26|}my<<_@AZJ(S;feTB%T8_d*7}BrzLb@b9-pV& zF4P_OIHxEjw!Q@&`*pIH?aU2)0FRm1%y;Sli=fQ$Y}8wWjaT{W!_8u`)ntQi8($~c zIZJaQDp4%DC@#Io_T1(0hGlET)tkxfw25P+!m|5`GcH9X)po-t3>C#`%=Ze5iw7E27j z)`@4F&4auBkbD}}JMo=RQJP*3JZwCJvgn!Kt|D??_O{N+J*KD(m3nshkN_(ti<~*E zogsi_@-Bi$i4z<_kSHD%dk#Gbf{dD$xyO~a>!6(liuv~F8&IKr*;g?qpn~dPw zzxZm2Zpn4h9}AJ~tNJsl8pXc|#Ugt=DyhDIHVPoh6$zXZKDz(F&X zd#&31bQP0Ca znxUCqHB1E)&@h*`NBWLI>(jiL&x4Ctb>78dx)RCkx2tvvh+9Vn3;43`t_swqYutx^ zeWgt^4qH`L=#yCg9jvDtJiXsw742zaF2ws}!}C@xH%A!!ssH?Da-8M+uYL$Co}gEo z3T*}bkYQ!twb`rMLgzr#XPN!RLrqZQ-YD9lIWyrtF{^=;qv-ENAL^fib=bJM@9xF` z4J)h1S7Rzltu%Y!FcP8PQBnoVK(B&y!sew_mKEB%#4kj#Y_vyc3O}vIMiWfhop)7h ztUXOd3NWvd_fRs8a$Q;z_-W^i+x8I|Sp}aG$CS`NXy0YBG5PMR=po~)SRF)6pFb@t{ z*Hp12R!H_Gj7N3Z@uctQ-WlmqE$I=!j$IRf&AxCq@Q%}ho1f}~N zjQoSnG;Rf9{dXuzC@F`M9y9ghA``nt`mIE*lb%ACBB&FXizPmA(EekQ6{Eg&*%~%; zkVZ?jI+y+tlbF!>&l$SH5s`!&%of%yNMy|ihNa7EumqxktMy)xv^+A~2GwLmc)=|{;(5p`D%;bq@Yp*jnJ#e6 z%~ASn24&t%EnBC^7a745@Z!QnDFZvnOrPkj@6$s%Y!$B8{u+5$ z&)TZ?GwfXEmOnZuW)<=ZAC=P4slK7%ZrZ?52W5k?<&=U&@d}T~K2iSKS+t=U!tnrZ ziCG)!|KRx>7a}c*e;^Jy2GE~!EcKBx)(W(1^odz$4>1Q+P7~7eY=tv5HckSCM*!2D zu*GD&Cfn`D{@14R6e)k#6uM`Y6{NY6}YLRpc)y_)#e zE5jVY+cEYgV=z)&m-4-lC%sSiyIq`oTzH$9Wr~ho?>F=h-h(J&S1EPPSOTe7ST${V zA){+iGJWp4!M?`4>Q0KB&zexVJE=}~XU8ZSMl2rW*g&feiiVh*!3#&tgiEDvc1b}w zk>6+D8^XYaY%3pTL>o(rr#gJ=1Cr3*0YYBx@t^Fedp(pht7SfsdpWLh;z8mw{#Y{N z#Bd(0^fd!Yf;e7{u=BU(eROPx6n6W>4)vvw&`8vhE4}B^&gl?+$Fh?3O-$lO)`qxh z=Y1G5HMHr>ojRi8q{`Bw2N+;TZJNOZRc=PdSUW7u(&HV3<@`4l_5PeR-1>(wB}Wt{ ze3*B#S}FN^>W#~>TC0}iIP?2d?;4c%#l~<;H}{+Qu&eWK`i$ML(<@R;_o{F&u4{_c zbhZcFpeRs;S96ssDWI@bo+iN_>sS=BmC>gYn;lZK(H$tMcw`%08USoYLGh;|v2mydOY=a0IjfZUsP#6&-U3VZfqp+=u4dgjl}q&HP~cA+@Y;V%YvN~1G@7aK@f zhS$eaZOAvh8cobgChR`CvCt%Tc1LX~C4XGi19Mr`v#-e=v&9?P*cgyQgfdOKfidxR zk}*qC9dR~>rDH{hN$NCDMH-=ZleHXS{)6Mk^6j?-yBm^;((Xhu(TD1_E_BWe zQ4R0%cNK{hDlErioMg1+qocE}suRoIgR3a6QjSuS9IC=YOza)BpY34@keSUUTup#s zq)Fi0P(AROCv@`mZ>XpOHXmXU>b-ROdrw>G(9zY4V3kSsuT2 zUq3_0aqAzKDRZID<;wH}f$bp>-*nWt+08Cwd_OU?Y~GGOeULcjzte9tij~n1LU&~Q z)~8yaT$v;t2FilLR%W-Fze^hHYhJYzzwqvJ^CD)=OAF<3+#_-Z8xmpcml_RMp&8ho zYHA;RXJKRISz3V~q<7=@=EsPGD9x+h_ThQD#JMWGcw8|XINfwJCSl=;>*#VSdtG(# zltq(wT_P^;dnr%$9htV=3@r=dOjhUadUkg=LJposo*g#gSGOfsy3*?p zNijF8yM(|T0W)nH zIw)aA-)q-;is7mt4i#Bx%Gw=wX&H zk-VoSWNr4Fx~>16ik2F~;5E^E#v}bbxiJM>5BD$DLC*Q=s8F55wAlOHhBJEvkMVk- zua=TOB-;)q0NTfr6o6A5yoNIY)l|fF{BRplIAoGssCh}Fa8!OtoS60>TW&%jOkWo9HNHVb7;K}{9DW->=D`v)^m4}?sNN2QD@ z%JX;sund-`T8sBi1hJ)KKuebW$G>Tc(yDF779HM2V=KD8dul)awm`H|4)npsMWR;h z0rmyEBX=>!i>EvyK$*2Ch@ZWsQdN=)drvnHTF znCq~=dvMf3p<*nn#*J5GGw&)3tw*n>ZN-l+-EGxAYK|$bFStbULA!GHZxu8Cr5AD< z-t|^1UM172+y|BvAo_k2c>k`crXKtW{LqIhjcV*rg$I(REPOBv_4E;3{?)Hkx)TD!l%u{oCsT;DiC-Xw#8e|PeNWu!a|nt)%W@o4~;n zY(-T?Iwb$>g6`Q~FKo2f&e+4e;`EMy&dHo-bPD_IQ=W!tXHBF6vF^erX;V_ib*YHf zr)fXPyJ3o*3yH$>$CDm?hLnCA`_&Lmr`Ia4~6V17<>LN7~#;4L%m|1AT;g zrL=SqXMIa0@0-WCxq=e=?#D}K52=Mz)t_<%p%9Cl-^C-~X(t`bvs!}=jqL~U`PT%| zs-8=Jj*ngm@V+8lqN7TX#fgEr=hW{@X5h_^9jO`MCDVMb>STZ;n(R@J)%n1%hbr24 zm4Z^k20pu682K!3TK10bJQ#nxr^CnD^d6`HrFEg$|9MZm!kf5RXzP3;c}&C>!rWp> z>CrKn-klnHXbCPCw_)qnR;zxE0i`PX%n&E;q>e&}oAd&s9osnz`&=rzyQ?gpv#Guu zC4blUY}MQ4W-2m<)X!);Bc4ooeA|<*eO#S==`aq-OTmK?zEVD0d0iLU#JuX?-DMQO%Ewo@uzOPo-s!OZSJ|0p`H^C*YpA z%IdVV9H^QWn~Jsemc=is3FGz^Uj5Hi*_`@ESAS9AgbFq#xHem)M=Fe@)72ZYw`6|D>VYZcpav)bh%fSr-2>KcqU!5up|Cs;D9 zH-&UX?iH3Cei9QL5~r`DyHNN2fvL7R>1kK@<;u#~N5L<@@zK5roB(=N;cPG6b`~9m z+%5PvppNzvf4C;r_{6wFAlCBQ)0ApKko*0`POs7Y=V8Zi;(7?r#z`nr$G_yuq@gHA z;{6BzBy8uxnie_|u_=8acaDXLw}?r0AEMI{p&ytl=Z3eyXclo#T7TNaXiOmOLriHU4!&7y>) zTXuN58CvgI4#n$dIIm3lS~JxOh_!xAoc0#H=C2X?Y(T|$XS08MdP$poitv^6kSb}W zvF|SKLMrouXMGzKCq&*OiR!<{Vt@NGrZxT0@cv4ojzCkQ4#}ict~NNf&aBMK%S;m> zDc|X6>%>6uOX+*#t?o-WHgY8N+rskXoumf2Y|My+pt?EBKnKQWD($eDi<-|PudurE z(Nkc3C9+(bDuC}51|e%PC)H5i%rr$67_fK#1>wieSf!18`9T`x5^~qfw ztbLvE^Oy>GWF^yHygk)yP*}ZXKRS{Zn}_P=SKfH}g?%zL!0wYfiH*+Sv_RJsi)amS zt!UgYACQ!>Q%H|l&(!WV*Gep(;t?v$G|AK!x3-+{V*kkQne|#RRJ!AovD(dP%1PyC zT4RW*=DOpN*ISZwz>gXwi6JI)SDclWvh7opP!zDGo46gu+py0p1+KC1Rgwu)2`b!- z3&o_ED>ek-F~h7ZPxrQ^qbSmWa_8xZ!j*+MQtjTR0zyh^GcB82;{0@i>B&^{kN6PY z%i`#G{MI0Kt!bY!U3P__tD6PG8Gdr)ifAPj?WZltPCA7%!RGAwnL@4x+2$4dLadxy zY^Iu^BG}#mpM$#AVEFC8N$9NxdaNBH@Rn&>06S!sg>Z*A8W-{adw(jhSdxXl4bM&H~S66IjiJz+E$&rvwu|3(LOlgE-QjF z(n7O|2jW^)Wr=s1s@`m0A3hJo(>4c}Ew$}YkGN9Y6n6%VHqA{MXJKw{T(YutY3ZIv zj%!M1m6h4e@O}#W0#sP%$0$)Le!!9`hg5Z+tjep&u(vppu+=j@)qgvrUVx-4fX$-r z>|O|iwcQ76-||p$%(>){khgZRO=hz$d1q2Hd4iii=7AAj^IjJ207Ox(Fv+}o=RmIZqzcM|zI3>%oyso}p%zsI0QeK#R3D`IZ~`fG^KjBaIJW3Q*R$y5d?`;>MvA4b@J$LHAf! zhZ>HFu=(_@f4-5JiE$wm1r)DhT<0jYI=+$RO4lH)o}oPv$Ym*i!uB=~Uf4LQX<_lm z1uiVKkn+?p#1MEN7+##HRswd88|)_nX+LHxYi|^{p`q5 zjakCgLvXSdV7<2I^wlwMSy9TT(Mp;)1OVMr^hS4%_gn%lxb?hH+CRMIzg@A4G%r_P z_8PY>>BmZO3$>rbRfUbp*-AFkt4Y!``sMu#l7dUT?cCa5ix0ZOMN|ju@2*jQ2oiX= zyRZ5cdo-%h?r&5!w?vaXT>oH7ClBv|P0Ta(z>Y2Aj#AFeaTG3=e{oaTC)*;?eF%_H zq0;)=Hbn@|J>t%38j)Re4MH*z{NK}iwRC|4!!7vXI5spzdT zDVt=Mv&vmcgy7=Ydw zh3p+t`6-u9{9L%2Tdgm*Pu1bR@%;MEx(9BIr4i#Qv+H)CGg1kHbwL(rXW8?am9Vxv9TRR1Y|W!>};2w zq%CbPZtC04SXe&k*#Xd_+)h!$+Tr9CRx=a+>21kyH9i_;48DgOr5o?_60}36elZfN z^*6C9@*66jS|1)c1Ht8T{4)~YOPua*<$d%#iO?<|M18`8>NeL$;qR@&vdOT36zmR| z+uu=+m!pPj^X_2#);*!w|6aHrqcJ*UV9_#~KofI(OW{^T>(g}+0-Xfk@Rq(s{ ziyU9p%d5AMK0Nn*< zDlUr0X47w^cZb0h;~G^seS-Id;DJsY;ifHdZR!>}zWJ}`?mzyz47YQydf0)o9+o>V zp}5$uFBL;XF)*=MQ7w=Y>ue{M5lH!kvOl+buSPnu$D)(I!qCt2JdU1*Jlm(gP9`vY@nzm8 zf96!_>d%{kk@A&l;;W>)EN3mH8^+xNm?guTs_zCt*oEs~p*KDHsT(+`kqFKHvb~dv z1}2qYSeKcKJr?lrM^WM>g?z|D=#`t@C!??U$gu>?p%o}X@|>vA z(?81NRjG-5^S39UNKzUj0PED#bNma-ygxkd3*+m77g^tr%PxY^f+RT19BfwOq~tj} zFH7X|fG#*pFrUkClx<>blR5gK3&T!!Fc@H9PcFNi+4ibhAyOqf=_o=Qg@*gPfbEj< z*(#aWXGo36j3M?abb^2!&0TDJZ*XAxO(SW^cuF2T_8+{cx)0AO!d0$)>qAdPRtM{K zjhF7h0P^n>K-0B{ydU0UF>*iM%$~T_vSnp~;G+PP@#gwbx4DbIslT7sM5$zthNh1F zzu=v?e>+gKIQysBwFX+xhvJNna|8<4A#eP*!!HI09Ub-6Zd`b_pm_Tkoz!5gJ>%m; z?T^ze+~1G0ZT8lh)h?-A&e2{S?Wetydi#x1@r2~g_Uq8;-29>nv;5hOvL$SMc0@Ww zccD3^Uf?UohL$3@)o$fPcX`*)>YHLX5_sxDq0E4@ljcj`(}%SEGo%I0gX}<;7m0<1 zjuh~mM51=X@8G#a9SV5PFM9A2YYx5QSIxXepxHaGK~M!Tw^oBHVAsGd&K_tO;*Lw7 z8JXU{aK#&upUgH{(w=v~pZ(P#Q3*2tjM`b4!v=LLNFcmAr4=}`Rd*Uz+SSQbF&!8^ zDjaMXKyi}Q1Jo0s-xOX|D-5T|U~q@NJ#4}IwD*Z-t#nhmn)!_`Zrx4h7YU0ob#lRx zR8}&8BV<7bRwiSMB4@(?aX+yIY4(fifnPW%rP64yCG8j0sjbiH$X=%+_awy-JJ?+G zy1Fin-^jOWL0e~gpQ_w)JBs@#^>0+$5>q^f9GJkq?Em8orOhfmO7I$nC^kFEv?chT zKmX**!Y?Wocz6;`sN$-%)_4DFw5krmb2r~s zoaNm2yA3Dr31g($qlu03g7Y4B8`uB0E*`f zL$vLG@{Vo8Y|VcBqB5;%J$XWyea-gNuCVa!dvykNUI^rx8{5S%REkv8>0v|6Ux~nO z<3GI3|F4GJF?sGAEzF7Ryt)R2WBTe8PYx9lr^?*OO=;;}X=u>uin0Ubx#RKKS;M!mvU$N+GF4kpAWa^HY^JleRZ1u`35ct!3Ron^Soxb53Qt27HWm+%C~ZfJ zDPt^Sf45SWlfDleuYRd+VVspWR9}S8uTTo5p2M5dOPAy6f!Jqu)UYhqB<;$%HUqN& zQmR0OwjopRGFcC*FfHqZ^l(!B6ne~y!iPf-_6oOO%eYN)? zKREO@2kPZ;fQrHKSy^`YwLrLQN%1@xPU3leH(=@gT=~pq@}ik+;phk%Tm?3Q(nojN zs)d;BD6%VFxkJcNRqoWV>>BzPAotE6qcy3@zOhZcX4Aihf%+hMJ*MrJ5#bxz{^;+A!R2%aD zC)-h13>Q+ZE=s*%Q-_Wq5xOH{u$5bGmJ`LCnCU(se*Ya^1&iAFg~yHg#d~6cZEMdk zzi}P8UaY-$sfR4g4~}@oF1MXZkKCp*^cEpvGG9!pF$51ESrh>Cvp1#3b-Vn0&I-+P zS`rZr{-Til24+N9M&-vHX4|P|-{zXiIa@TBa$)hpCSeIWnfA6>tT;U*c`I`BOITEW zp^kq(f3E$zn(UM=j;g40w*rPu(Y)6T55?ZR%dRF`u#6 z_GweCHavw~xjNGfF74lm^02}k9qp#dYitxMl|YRS2ceIrQF3m-L##VB{;oN7YS-a$27V= zCZomly%gMsAyCY78aMM$H2u)ZsGr&kgXt+h^9m`?9P?JeRm!#>7~}|MSSI_|bp}u{ z$TUZ0fC@Gg2ZC6iH-2Ak$PJsxa=s%cP2*X^GVjl%UPbBbwYcT2o&&34n-Z=hTzT>i zA$g7bi|WG~zQd{7g-zjwD#G#07<~)A?R&68g;1j#q6IevU@AH^Juz2ma#~P(80jw; zJaypvik>;a>~F$N|FsvGR5}BU-aQqQjTPbd(C0AO>UR|=0;jFtl1t8{2seQ^n|`*` zue`AI|3$@Fy~wm=UO9HKB4im9@5Sd%jy`|=K6MF+b|tsE&a~FNFF0;z9iX?F5S0K@ zdtKPr6`ZAFT0V-B!X2-F&prt5^F5PJ6Kqb3gg#S|wr;?(DLcUGKGAOemt~l2ZAp zYIB}lLpqdrTL8X% zp%Yn@J2SlRPTg3%n?{_v3L!F&+blE~;~a~<{Vi_WS$=)E?oB=1a5(tb&tMI2JB(K!-Zz7%O>t7A!nL?49(G>0;tm_$rQPIEI77ti~QqNSD#C3oEL z-{|ggd2~b>+W6yB>0)fh@Um_C3FZ;~H@_qv%1XS)@F6j`{P}WLCxTM%BF#yw_z`@i zK1-gX4;N?Ll&hzaBh1UdwbO}W4rxLGmi$$4XWV!LUa(yDD5JbP_ruNy@0PqEn`Ju) zL>!pVK*j$%VeLFdzBg!`#_h4MB`J60=}C9>q&|)06U9rGKYG5?`YdBJvIg1rSE;Pl ze{+#ia)@ogCL4_d)b&NfczWxZQfedm$JWO`Tvr5L8>~Q$sie&xTC3tKxmuo#O>yyg zm)Y&bIe(?&%c`fUT{A30vR!?9VGJq)sc6iuP6^o7R8cNZRG_XHmwu-`ZyjZZkg%TI ztnqvn9qYr|NxY+WIa^^nm8ZKO;bo@S>!~;JEHl71TyPak!7;2<{9&8;Ul|SrCgnMV zML1p8>8o+y)*o#m*i9~+lyim{fs{)c7oQJaM# z%7EheJ|M&=PVsz4YRykmJl|iEPvDnlt(%5cb{XZx&o)jzJ2P>vrT>Qi4C+Ab-ch*b zFRH8|s{%Jv!U6CXmGCZ9RwQazTEpfp#X0hi+`PYWY~Ebxc0|?ad!wH>oLF4cN&NC- zS{5WD);zZw@&&q-dbax))szbPYJPRS!%0|#=u-6_LfGc~lwN9*F-RE4M1J3^D5dNMY=1=B+b7}ZEL??XnJfr%LEiit+< zqo1u`Z`+hk`{7)lO-_MB*(b3-Q9kV3GiJ($=&{o75T-hrE_x>CMUGAln|n|GI19}4 zL30I>k6`KP6jhKG9j;l5Du}0!07VsKm|}%&mubABE)CW%@~|6PvQr|IgY1UncM zykRW&Tx*lM7P7~la>{$h+c5vV>z&-blo>&sOadcKTJ^(@bfc#y$AUfH6Ok{MvQTl) zein?#>>G=RJaAocM1L$U&cCPW{Ml&BSBKZ~1f~n(&DP;EI5}pDST-9HV;?>?c;~WP zbG80r%R}B9-kR~3H&1BAAH1SN*Fg{8i3Os*R-xoH^W z=E@VI+0jIOR*sTz56Gv-Z`lH&H0?#vKiRT3JO&CH`t-ii7?#_+OYSHEYk@$8?9ja# z&soy~L!)a}$|lCc^$#8G>>*^OC}~I=*W4Au@^4vMh0Tpah7Ox)`*#$(d%N3-UIGwL|nDMIa!lpdK9nWJC_g@_wK(UjWAz+Pi&~*pNNm$HPl$%U!6F?@1I#(bf(0A z9;vbgnA`5@7gYU?f-54maqxwhS|F7!+gMd@zuH%2Jlac5_S7FY!F~@jHWsWx+P7m+ zm6~HcJXFu9^G8Uth1C-jG8fvF9rVmS_xi{*ASD$)8NcfFuc8J-mx)#Fg$rOeuDN=2 zNS)ojA}Wh-XJ-_v%`f6WXquIdQkLF7_kDMpye9S*Fa^^M=5!cPfg?%^gHDf;hOynT zC+6iUa-~HKzgIBsJO8ycWEplptj>1t(JJ)tiA(w36o}%p#|u1`Pm=>8&96egczt8+ z5zi`RONesuWHn22x-e{!8DjjT`cCf=qKW%+9rShue=hFzZxfuDUJEATZm$QHK}xDu zVK7NIx$CArK)ypb1M0yV894ZDwPfeULtAEgcjrPP*YZ2%ebB}AH8Ba<9`{M>=K7npgZj$g)jc*BWpuHs?IlVmLG>207>tAmjlry4%9SNey5h#BgsJ24o*RGw zzit5!k>}tu6u@6bl}d+~qz&OrijKTsW7RsJrc0}2#2B}eQn-u2(Rf~KP1#hP=8+H{ zE>f5dIdWS{Uw{HSl2W})d>e@bKr@3L2IQE7&h!CusL=RrILKjv!rb;u$9)xIg{L>M zF^>0q!^`_xrq}xP=ME39$;MACVRQ1-+3bX~^j2O@f7%*(#1HHU_Oz$Fb%s#iX3wTZ zqHF#|b>E(Q<}ph9nnGyQ**W31RQuh$6r6kPoamMZ@)s3`A+qix2#LA<10@{rG7aI6oAuU@tA5t~nMfbl%r&2uD@qxRiUx ztg7P|6)4=toy9bFo-HC)6E?peO%l5&vxrq@>F3YRs-|{-YOypkFkXDC%(|nJ_0++^ zt+w>-5$UIEK=X&KaZ8u-Zv(7&uBVy9?bs2{Ozl8?MM+z?D!xW@m-kYscy3Xn<%%=K zbvLK$*ws{v9KD0P*2*o61=NTF3Mn_ zCUiO5dkw)QCmo#FmAGz4y~#ve7^fNQA^1Sl z-^(4PRL(b9=_~c$sZbb{t4YMIxd$g{E_HTcQI>g;?-T`(c^Mo^?19~Tp)2*^DeWWN zF17EdJ4(jPa~c*yprGJIrepJfGxYQ^WHjwCrn;dJzBby;3`GM$6gL*uA`)|CQG{5k|@~#(``kk&!2N7GQt2Y z9gh1Kdb}q;J=^7yga=yt#F^OETUNbIAvx)D&~`QWK>QHt5h>Qq0VUM@ zWVj)wl)Ts7m>w~HM~8*nJZ)0xvKJ0@4G_~!n@=*<^(d8a_spi&SaX!G>u{n)$m>FQk{f)v<)fRK=LppV&&xFooHp=t2E9uyNH2t8Y zqG-;g;#dp)r#|ubRQtP6?J#JmbxY2c1qud{bJVIduc`>axJZV)A!+q1%5W{Y00TfQKTD8*yN9Uf@a8W6|AkwhLKF-%#&m2r-WGN7xMfW~AfOUNB67yDoGm*N<*U7d zKU6!jih|X~D!T<^R-rx}9aE(zQ%DeqSw#kNf+TPBM(VSyOyqIX_j>U<+4|uF) zX&Kyr#Q3PJ0W+5vmc&J18a4t*U)1P8UlObkD5Xqv%ItlEak|IDGxX{Y&sl^g8 zo695ua4)IOH6{LbZv1x0m%<47`3Q48&tlLJM`Zar@mWXrLMaHd zGUG>QYe5luoeIWKT8CJvURS8(FDmp@&KpA+N<{=-euPv9&hl#WG~(TM!%nou+dSTV zo5bOP@-3x8e_M~`Q=b%YhM+JGUB`yXl=rFi$~?%g0jPkvip z?psSP_#x{A>Z=M)nGxm&n0b{*9&`*Q^KvLep8g=IG4*|OJyI$ec0USu>#wys?}MXP z&dgx9#^jrsCZ=U}2ktLq=xJy!5nlXZ5&Y$ld2_&R>ggWEC(!oN@9Li-V;)wOUxbTS z>xCZ$xxrs-rt=lM#qlPj)uE`gzNfSfVqdK6AU}SanUY&DEQ%jhOKd4M@zQqnBxGM7 zrFS@zDm9sU=}MMsl(%c3cs=zkYiSB*?%ds-OIE3EKzPf^_N+YRmpfx_9d zzwwnr7$M??MCh&@8ElMs!MS2QgOFWW6oM_9b+y3ll9oqj3`Nr%RJyZ9Ko+=_XL8bf zzC9B!?4h@sZYVFsafP=#3CZ>`mLe39ZBh?C5;0#{IofBBqC0Zvfe(Q}_jyB+%|6w6L$>9W#jwKSPQCH5@MhM{MfA^}Z&T6H zne#$~gRl}1eZ%Hkj}DJU3(bNQU5)x9`Enn70N&Qmcti3PB(>TOZ@KYJ@nuMPj8mZH zAnlZX$&p&ovprQ8p>!~8&P42WUXY!ijKk+hb*TuB`EKOE`8u5ZxltoQ1gdTYscE{5 z(3CXp#P9_68-N|dEYm1JH%3jM6+n_De&LN_o7|`?9rHN5zNvyq2RV6k_j+U2Xsc%K zrlFv3Dhok~$O&3p+E=Uq=^c1OyE;Y#ppG(CeMTW_`M6n6D3;!XIaGxAy{LZEjQB^F;1xw(m$4`r;)~^?Y~d6s?lYeD@WuVitkX)6PJNf zxf)zwUcDu6!#x36v9B~BsSc!ennFIMVM>KF?+{l!_W!b_6zTN*^JI1UGs(~2+5{5? z6CCz#D@9CSCM)fMKxrT`1tuAG-C>}KX>lxNN2OQDsgU2BXRZ50YS8qzRnVs8);qj& zRDOT{Xu$=J7H$ZwZfwb81~ejm)T#6~h(AQgEOkWk&^I`uZXbZn%rF zs}~L{?qaH{}_4)RThOf$Opz2yvfEqoUukW+BD%-l4 z%2h!Tqof9BF3Efh>U(_%kwy+ODo#s;Tvz76)T>Rk%CTq23EiHAVnP#dJ-erg!_cbrHp3^xviiqat{CG_6AN(n9Wo&=YBk9|mpO;jzu~r;nE> zQ6Rgj*a;?|x?DO=hkl$i>dv*=aPjgyEH2wd2A(a_4esL>DVUP+*qwvsVj$_lMher3 zlFOB#Vv<4{XxN%&VQl%#h~iI|NIBB^eRu9BcJInlzZT@*`_;b|h5v6X3dU{P`r4+%jt+e6 zFz(#}PB$`qeZiZfz=uz7(vpb$PGfn>8og@9jYfof&5SGcQJmL770!87zipcft{p*U zzwSTn`JI0vwm@OO=*P;sTM5NG1@1gt$+qI0k@2B9zfh#h*jqz(-CdLdX4 z_VErYzq&88@{_IkXDrnx!suTFRDIhu)-+qSTDfqLjq>L0=t_>W01N?#6*=U>0K(y5 zF*;7m-c&;wfo*|VDBk|jC7I*t>Bxt{M1NrNwIl0_X7B$2?Jg5cOkvDR-j`LfPXSY1 z!^o|Gr68xIPz*U>x-ECE2~g-|OpIsAYisLkGTKE>pwV$LEmpTdocA>ScBjE3F4O)Q zg!X3mr1WYNJYsiIQP9PHu30l>Sy$D!*uN>@OzcR-0`iY5c&2N`8`KYT86403PDU(> zOlR)^=>2V?J(O>wU1}oPVlRf3*G8tHIXSRI+KEYBrpGPC-riT_3L#xlM5sB z(Q^*ndKas6p?U>%MGX?WY7QwXV{P2IguZPq`9z#~_7p6Bgc4s^p zy>_=I8USU+5ps^B;Jotiz?SC@8T^n-7fvA;@#ZYG>MP?q{d6qMCs3ADJj2Xi&vno$ zfr8p#>7OO7wtUt;1LaVAO;pg@D^Q-k};}Q>@LWT}$*^ zEUbJ2fp~F+ww{G;T5m)Rj$yElR;(Jm<;8K`TfkHkl$f4=9dKe#z^K^2>6a)So``E8 zc66QuG?%Lh>&W`-??4yAA3kh^7v}g5uZ-wXsG$E|743iUIXu(&Yc8H??CZ~pXBxlM znx?_wna11&6;+&WznR8s2&Rv^`AfG}@o>P>hEXjHszK?VovvjGx#i}eP+l-`xhpPx zW4A$ZU!T93{-^bsLaZr&P^787pnQSDvO$&ha6KA5NEFzL+G(4d6icsJ4@+9CyBvnZ zET3#N_+k+0>7vt^%@(t>6ZnFmUrXS)@IjJHF6BE4Dw4meDft_wSmi6hI?TCJX#H^9 zWIIy zZ`Fa0h11sb_|ywA6m7*?&FzzMNXMj2rKq)8(74I3=Xm$M5@n_$fWS5eO~~ zNeJcad+i(}+mfC)){rJxP+;v-?awQHpGuQhIh6yR2WY#*7*;bbkY! zy+hRYE>C{pL>(M;{RtFc z{PExL_o%WE(|hOCXA?EQ2>g?*@^%zD!bd8G^0P0{Art?Dx5WR+M=6bZE#O!SgA-GN zBm1kM*V~@Wfp;0Qp*r<}kPG!q)|LE)C67|z+lrSGnHN0;%O5^1B>dxA$Sv6}iR|WM zJ6nK5o>Pg-yLste0?&^qSBpRoWJlG|aYzO=mh*qLtc$BNzj>}Sz*Vn*huN+0bzzSG z&`OUV&4;bJFL9PGaan<)pUo}H8e|o=_X}bb09AY2dj~#43ENlwxyG(ix_1t@v*UI% z;3-mX?{HqLJiY!iy!CMpi!YOMG-UnR0x3?2_ z;Tj`dM*Vi&`8)JQ-uVE_i1W2GooA@yKv_$tS~>Zz%b-UWu01YT!rZte!l7crLs&X4 zX3%*{blG^7HS?0CGuK~{LS`UgQ5UP2f)`R9HkAEmnaO`l77cILdOM@Q=ZO%v&rcmx z?KoOtBL^oI%Tw!Dao#_7P&lVhBXd1#o!DtJ)xJg zcD1H&#HRcK%r^w(dSvVwDK(By>GWPG5+Q9H@q2&1^t>}-*@B%>;nw%dAZZ?( zhPE1+7eDff?h_F;CVtoKBf*bhaU_^IVIt zFx3v;w!m?Dp@)S8sM+{-isbo1p(#x}WHg!X}5iTNm$tBup=D?cfW3#>w2f z(0WQ{7fyoJs}s60SSeS*6DVjHW2`WF zNOzl!5YRloM{r2?HTupXB`&lqJBjGz*fHNMZPKAm_GtXF3GUD>Om|!bwE!|5W){FF zOk12N6>4>ShFR#Z7E|4S5#;-p8^boU>L<(Ssl(s{zAoZ6HvGPMO&#^cZcc)`EJpi{ zr?6`39FRbvUk04MJ#BW+zZ=j~U!Ls9p~3lwx<`q8rm&3dZcUtQXZ=FQknD8Xw-Y6s zN+;X;nO%sCCnYHOEUgMH`t;CEw=F46DBOQOo~$n9iaegFr{ z7}GS_6gv|+=)5v!@j+KQuDtSFh%(Ow2TH6GxaM9|Z z7Pnb1{83bF!o{_D1w5?H!S@K~9Pt|H`U!VaE`&LWET4?j<>i8>-HYvbIT6kGOU+48ZkH@BP8Xu! zEej_|fq7ns_fJtuS1A=W4snkzAw%`tg$C8ugOYkX(TH8YRIT%t?nl!x%bP78`DW(K z-pLM`Dt=WoOYGcXd<#Ri-1T-agCme1))?>ABiaKghzoFCrdUMx2}jp|0+AOKFcvN`c^5szn;(N( zDS0dM+~M4Wvif@!~ZDBIR{ zH7|rf4oODfeA`0ub{ZTAZnl#N4jdQ)ICgC=g`oTeg+%IxlJeU=bGGHFG0m5w3fI`` z^rt2_{A4z(Hpf-;+f+s=g!@IcO$OKe_vOwC#u55K>8_ykny8$jWmJzSX743WL~Bds z|GgTh5N!V5b4uOP`r;AhKI6D25Kceu37y-79W5yr#v@6$eN@&-eA~IevnT^I_*>?l z1z<)-OUF;+i?+!fyt4tVq{K1R>9|3l=$U{$miCRI`2hjOu3-3_xGHK* z4)6LnVEl)G&3uIXliSUaavL-zYgEi^fWq5e`|<4$AbGVxzPj zo!f=*I`-qV~dBuC3^bM1azhwi_}#V zGrpTM^`ViO*h&t`x<#A4lGKWi!AQm}gn!3iUlXk>CDfQPNKH4N-!WLz>X+X!nE&(h zc|?u+Qwafcb3N8A$y_Rx6P5kA^Wt9w-cmXMVi2BsWqqOFSLZNw(`sB!WcvN`p76)1 zb$Z4XiZGcRK)Bp6s%_VMM={RzJFT^fB~P2*TF$Dm>yTqHSad<;v#6+a0tJ=x-^8zf z4%bSkxk1O53h#rw9{nPiU!lqQd;8=+e@^IW`xUUxaO?#@NKDL2lIX-U9*<^`=3{MS zs;cXv%|ee>F0}e>E&Saxn(EfH@d%37y1dEgtA_TywM2&%imK3QK@fq^%kB@$rrNTb z`srNuYV>`FLQ5mG{Zs=baBZ za7--#*8qJ~=Puevu1&YOOhc_TidQviIq112ChicDMCk_!qt6k-+g#;NVcmI<5V>w& zT=E>MyC;3p_1(C^@DL>YpQUpFwvh zW@k5ivHNh#pXJzWL8as)IGgMj!Ge>)w<nsV?02(ynESfLsKt zN87UtD9777dw>mwYy&Kn8(cFCx~bIIZ>Z=s{KMFj7BF1%{1Gu@23u)(57Tr#4{zrg z$(YoUy*I-3-H^O&y0I0&_+_Pi9T9zC?4*K_99RUNuHWQjZO_q9*y_>Ld477x?{|BA z2#$7a-xY3Kz1UeshZ;&+ApzAV)W?50)VJ7&nb z*{E8qEXmus)u!VhqSCr5NkS%4nDcBtq=3!GbLtooRNOv)FTOM~fn6 zYc`jmqQcoEKX|sI>XJ;;roh7_hhHM1-){c3&H1nYp2VZ=CZ)6D#W{$0vyF0z^Lh_m zZGE}`H)j5B17^pq zdgMSr^lNpih`fBe33~?1`}l5V5|2JYx?bwBLtgO>pIRb0mcGLnVQ$&Q?g5 z=k(n#JCZHsyf*s`rO*(a7j1`ijn|L?Ki25Q(t1dX*tRkW6T5!TDe0f~6~=x%+cHyPMVS^E<> zI(AE-^HciLcf!q$wZwE&2}Uw7V>*lXjO%xuFG3IzfCTaK$;yI74_MY6QtBJC5QY2OON zMrj*WtuP1F&2Mm?6_D(Q{#gQiy?1lFR!iu5XYJ0&BPk+_23|t!#1kKFUpGh8ymh$=J7x1lKGpA#@}zG`LBlL z4BuX*-M{s{_ZLCtV#3A6Os&f=f{tGVcy8rH!Xo9T`)}xyhHZCsz0wIFvR8>Lt~if1rnb_dg~o%%x-5C&h27^f zqFOy)-&&nAA$Usn&26d$r+f)D4-yhMk3KT?ICR20Q!g{_v8cyFAHi2gAFsl|3=9m{9DNo9)wT$uojtS z{7(2_8G8!w37>}K;_u&nCw%+~pZ!kwV5yJZc(uuVDK)bTGuvwox+Rj1A>;@Md5kd7 zti+~WK-zXNh4y(M4STrGW8pT(pKogKiIBn`)$TH; zM@k-;b3fd1lT;IG^0#df0t$qx0UG{`B%L6=fu&e&1GXQrTT^@m@2YxD`_L_v4m#ONNHulv#$S=TUE;CuImfavdS@RF~p<_u| zhfuZJnX*kGZI*~1eA(YR46y2pUDi#`g7IjO##hRh0iO}n4c~9W$tGT7JPjuPW16SY zvR))Q=$mu<`=ku=Ga;H{_XRYLk@bSwrGT`qMpxK-W*%X#njWFo^ao9<>@9C=m$lW| z8`GhC4kdWs5<^w(Zm3s0@U+yi9i{AAQIu3Oisp(-yqm0L0}--oau<#me(ZYjR%!o- zNF9)CBKCTDwVh;1(lAGt(4^5^Q@NKAtZY=#Ay-7<=__x~#2!ic8|Dy#lKjJl=OP!u zcLQue4`SvS-c+Ku4W(B(?#x!FnmJxbA+F4dlSy0mU8ZwLP9p^Q>I6G`R$sZj?ypGL zD9>0)j8dEnkFxMqXNH|3Xl=*P9qy&A>K{AdoCc}MXyfnqy^qWg~Cm7#*18;O^Xz~}@ z2m+rR&;Ka?a@_TcV5*VSZi+wdo*diWVjfNNX=b=g`&aA6z{3ID4pqQd@N~eQ_S(+r zU1H@>vl2M{Hwo@E#}kOLzII*5GBN@?mPJ%%yia{kPK}5c8Q{t7tDRWlsq{XaPyL(tudZeH zq#Cw`H8nH|1MP0z4R85)wB|&Hx&FDPokYsBzqYzTyU;V6zP5*lv!G#m6!jTe4|UZ} z6Lplhfp>;xc*ULZ>N)h?tv@p9`a#7_c>({S*M1Q;{^g?UR+r66y%z%B)Q{o!c@B7 zqP@!%wXCE!+paJNb8In4=t%l5-BR~u`}^&M!n?f_SFgtf=&F?x9K&ps;>I$ov{Ku5WXVF?ROatL3S}CLeYF_QTi6igM8oP+T;at)zWZ5jyy=IJ0UTMnBG8aL~cRK*mVo6`UiGBoW9@7`7OG7|a zW21OkY=i(BWpR|Dy|>A9A&*>tM5CEY&qX!4xUcboY2-WoH8)4BN7jI{^xNHQo=CZ6 z0w4~}8 z6429W#hQe2Yt=CBu#{W1)k?LokjF~a4w97Tcgnr0=Z?Tk_aR;)ry!bAisi zy+`JeI^4(Orgb5GsviuN8%FJ`M*t6~sgB}LYO2Dkf^b|3N|fe}>zbI2=1)~(A0l1u zPMdNUjFmmBw{$E@n;THO@$pzY&Yk$;PI{lT5*w|@_8mg6A?xNg_>Ul`*W;xreDKe` z2eI8b^FLOEN@liwHOg>fROsalR-kcsW>uzzr5ZIWlLTA_a7^bD(lA1 z^wbD_GpCS@y)5R|v#4!a&!x`Evrfw^JU_LwuKi5@jeLp`^~-gPwU^ zSOjx)kmrQc;mx#w&D$2E?T9JOFQWkkaOj%(+pzFz^Jun6J`qzL(pJy zF$2>{WrBpQypms6zro{;_Aaa^1(d#)&bn%(h&WivpFm|!#$Kv&Y1Udftckh* zgzVrwbg{5(EH(^58H&iaN zway`BV?TwZoTr@AnIv_@pGR%^7v87iu~awIeDpO|D3}fQ5WGFrG_P}YP5vv`uc-?f zZm(1jXL!tjvMMaGbGpfazs(I2cGRUpXxeoEUzyM?uD2Jw`hm?4a(&+aOyTYFETOEz ztZ!g6Z@N?u>uQQVa3`pgk*Gb`mOxEiI<4J`bb3YXK8-V+ihVPZIc+E;KAkc?M_S#< zJeEAFHQhT(Z;h|{cDcNdk-g7IztsX=Ji=dMZ!OIx39KtEcW6=_Q(n_7yynu^y~?dFR=>Aj&F zz;-Al!8T;OW5(^>b^m$!52vn1{c(U?>!uKSqPa_|*XkO4*)y^I^TaQL_10~07MFQ+ zY7Zs1FDYYV(SU{6#kGRHl=X5&-Ow5KI&{@sT8X`>^ZVLk5f8MkTte7E8>+4Va@~*I z)c@!GLiXIsb$p)ny}W{CoFkdRn~EruPQQ;bFgdI2X3Vt=@1(%;E-yUV!kV#6ku`vI zVj)bLrEwNzWW9Z%!CRc0zkuHv1tXLi&e0eCB`+s7iyd*C1N`>I?1cq|2>#V56BtV$ z-KJe~Q#tc(wvgL^>sMdHNg-|GDO$iWEsv1!t}IP$fVOLd@wi;gM+1qx+FqL*M6}Xf zjdA?$&-C3wPeuEL0vH^-O(kc0#ws}zOiz9N~Eg#uRlVnHP~XeV?sy5rJNx|R#Xk0 zYHpD6?3>BPsmsS6FVX9!zBXJc$^#(|b`&CN=iTrp-|>g<+WBigtVWwz==L+CImQPe zY^`fl6-^c;g2^+E^Cub{EmG!l;T~00VPtxhf@>hgkIafHyC-rb-*Ss)1;rt`&2z3M z)B>u^E=3M6sn(yc*hAd^6t(B zw4NR8zVI5_`&=*K(Fo z8F*)m4PNBz|JHij4#@fFCi3Rjmg`Rz3N4N=OvHw1 zkn2ZSj={1Mbkw42I!;&hB~~;Y`hX)ZwO5_PY?SJc6e(xA=V$pvvu$L0U1Z6d2(nBO zM>W`d>1o7LN83!%=YqzU?e;yxF4AC)N1|0bY_!7P@B6CFu`-^!XqH?CuFq#!I5|3$ zouYj!r<-B=OmTTGs?HyJm}Hbxy8^+Xe^d8TNZ4Hr#i0DZPg;Z(Lc3ocO%kq^); z8V^ZvoHy$74y6*GaDyiyoc~oC@V}h_q&1z$QtuK=x!de`%gf899qABV3wtS@x%7-A zHg*?`USgPn9y}%UUIo|B7IHVw3sOyp8I+0)>+ADdMLi@tmEK_!BezHruwin2C30C_ zq5DH?Oa^D%G*(%kbIhzBHM_yZ(Ra&^V3w%al2UiRZJ=oBhgyM;l3*p4p-I=HQ%oib zED%ojemA6s-OZoR@fGuiJTIC3D#{yiIxaK#<>=z>IEifv+4!YnShsC1x?4komESkc zAMHPXhy_Q24ilT^vOa64VRB=xZj|YEHZYvGDU*6v?Mn>azYB-We+@VP;_1u=RW_Ke zJiK@6Hl=nZFw^qct$yL=&v!-#nn|m3(FqgMJ21Fr>~Z;iWLAe5bTxwc6ePRbQLYQv zIc$Ulc z10M^p`~7LK;TU(m-b%KOQxLXcIb&y*s@*i?nI(-DTZZvL6wgY zJdSg%b0URjeXgin6?ba9CX<|kD+C%_=lX}5e5gFTcr>^@b=VGKSL}G2F{*exBvbG1cS&`^_k2X9Z$4N*U-a!QY zc9+lKUR)IaG;XHAZ)LHC9qAcuw0j;){oTgT((l{DniDl8Flc*~oQ$(-2zZB-1Pue! zb5t0@jQ8K^`!r9FIgrJ!q+xEBU1e$a#JBTk{33WE!Asn5NZ7CIbJtJ8sC>1*OkbA) z1j8pl1f>zIVuntS#y76R0`)pVBD zeB@7k<<<`)_q=bA_FP$tEe$h$^Sb+s06u9FxV8+bi?TIeY-p%Y#EOmf>@(64B~*SW z;`~rGLs@B3V6(Z^W&{%$x)M%{BV!6^M6kv^v@^x$(zho!hac`lLFz#uW7mEcpS6

    #HDv1O_Yfyz3cbHJL9y^kZUKW;&>7PF?&6sqRN-!b?2(Q9ja+_9u~2;wg+ z%m<>e%$qApvy&t;s}^AGSgIX)5jkt=9<)ESwv*=9Fd+R1}IDfC%w z`c-!I;32b@7v-P<&Rv#*F@x#-l@g)*yi26(a&cHzN^$wBQBi>?lU=M-ob-@F5x1#r zx>XY_h%!4_2~P;B(Nv9HvQX=W0X){;_)t$B+IG|J2^v(_EvVQrGg8Z0 zlUd<1mDY|vQ8qj#q8MXg^OB!?Ut|o*JCo4n^6JT|XwWyHJfc&v1HN$=V3WcdQjrc? zZKc!*tL9DIK3P@JDJKu^3XA$*Od}>m)#`jPq4ldAZ+(4VRZT z)km;_5>vH)-^L<1{SL5gLKO|My?j3cB~4LNC{-c!Y6S zBmN77^ITnj=r&|H&besBOVZYB5w2A+m?Do19;M9We zvUka5E&1JLKaEi0eDk}@K4WeWcM-=QZ8|>A{PU;;C2D6mH`grY=YupHl51HDV3!&W z_2bD%Qhl7+I6YlaQ2NQCUdR&p2C=FjDK2+8YQYz6rt{rXAmUIgxb#(UqS4`3*dLVLyk8h;{!@` zm~vUP$G=fskk~JMX;RoKE&}hrwE4dZ&xEow9i0rxfE8xi`9Chc7k=ugK^Y_+Un|I7 ze_OP@aF4rypTS#kiFu=ssaynx|QS9X%f z=CfSax>rtMob-U5b@iC!i|yJEhR>F?lI{;$qrj60d$h)(tK`vFf9AB&nG!2U@1c_S z!gRSkU<%Q_RTk+T)12Xh;wIy-C;Jq%P^16q9=rkU@xGa5Bd6y+8V{5Loa{PPt^~GC zHHTotRpoC4$*S!5t^hTy-1u1_zJ#`oXHlb4Q;V+IkphxV`&f~1`R;*|{g!CJY)c)Z z^u&DFxKe%d#~!)H?Oz8(ZfisXgK(3kAem~Jo{8d8ww zH!9DG=R5(>-LDJp$n+IRh!z-=2QMxBq2-sMCLSGDnk!QS#EI4W|CH$COXp?qhKii1 zoyfoSdveGWYwu(+pQRANe&;kC#^uFtQNtKpebs4XUND29Zkl{NFLafsQ(S}t+P_Os zpn+5kLmq?M9%88a7F9+7di}@b#1nyR->PMgUHXTOV=?cOL(D!4vQzu;i4V)b zQN4Za@T0aFHwf_`RHUNbDR-kJ)p{S0GPZ_^(Dk4WrSqVF+#K?e6V@uYv#3mo5S4S> zdefqBfX))XIRt%f7SUN^3)akyCnB9wVuXGQDdJS319cZj2Z6dINg9YB-tp;uR3DIk zFptfv8!*;X)o~K&YR*SGr7;qlKEPaDr`vtZAGMUBQYWM;UOwItv)0#8?R%93DN%%# zV}%~e3daF81f6cYek@%|mN4YYRc1!SV)mwlTXqb_aRedBe$=?p{Y~A%d7^c=sHng* zK|U+f<>nBJRw;x>kU966!!?wteJD1$V+%_W@N(m!YQCT8H@GiU+3@Lk#%ll7vmbG9 zbV!Et@?&~P#-FXD7?mNuYp8fISW>Uianu~ARn3g$f zbn;2&3Pp`CMD{(9okTIj!Vm8x>t0pRc%lz%G~KB+Iy2Q*c83SbtB{G`k7s540@mqb zj@WtdIzY_hRv?7QL_C!E`&uUA|#M zTi)zQ=CIoCJG;O(#%dkF4iO;x`u|XZmocCTfCD4jU5Z=RsZb*;5;HFciI(bUX z4!_to*_qyA&ZEuJ7>j*UE-B0mmDDtLNp0FCeFS{9cHkXnyTeprA9EOfee_7+p0m@ggRsH^`{$zX5PLW87)Ia)+!YBHQ#-^ zr@zVO%pz+@+NXfYrG7bgFS=+p@;>Lq*Duy^Wt9o{EYFGNW|Ai_SO~5ng2|d(+Z^)Y zi|`NCa?7`y>W{5scY%yA78~T0h7ZgR`w?O-eQPm zKIO|-+89i&?Dp4g1(Bp!IyteHIvQWNIk)w(rZ-yY301IIaKM$D!$Y6 zQ(}5fYX9M^mQ~Vc6p=@x=O&Trs3+wspQuIsTj5W{W#4Pz`Hsas`RT9$PlWwSF}(EM zm^9ALeo7ijDkLkN7e6+#CRV$9Bz`a8YEkj_62+yrZF6UtnGFaLlmVhIHsxSTe9rL7 zcRfQ_#WB=hQmgmPH6+>E!5ua)!i32|LV(n(rQ*YGve=DD+fP>XZTzqMoV~wejg%e^ zV!?DH*endCjnmvT0f2*vf!M;0N{RbB+HSKvf9=OlZm4^3VRA9!`){{hr!$W3ztlG` z()^MP7__JWn`w{=ImmhvHMyUUzr)g6-kyrWO0-IxnL^E~&LjADsZP%Fa{m3V_9zxn zYo~rMp#FT(^!D4odyx7YrA27YR>z#;3p}S?@D~AP5|HVpUqUT*UR;qW%lUlwByK{n zPqU+I)dX?vRi2CVX{;`STM2LRiLcu8RIub8DS3shdUUi^+rLTy#LCx0@379UoW5RI z%#$Tuwsu`e`Am}aiE>UZmKJ)Y+qTFcO+)@(UH>7VD1{EB`M5xc99Y2ie9wG3NO`sa zh(z)~yCGIqqAHfnJSreuxlu2!OUa9)Dup^^Fq&-^$A&w}4m?@&$24)qUbNXL+dDo) zGS(g@pf?;G3X5`batfkgu&mf9o}AY}4xk#+$xH@s)pZTsS{Ob2Zz_XFAtOII+ndbM zkO=2sy^2qx8TvE8{SKDZ=u}zY92k6pS^n_hgB!nBMOkqHq?Urh@!!=2(d>&Gm(LWK zYPKT7di!o}D#cxq3UAxXbsbQyoO&Eyedx#-tedPe*clSVQw|INBo2LqP!`{%pKf-p z@1Sm&RMLpDPV!lV*@+`dJ+Fl~#C<#hhJIx{KAsxY8q`AYFnF*FDE$Ss1DYjMv>te5 zOakPrR|3`H8$H&N+4WgSZsvY>H7Dw5Gtdmft^7E<3g_@2U- zeB6L$!Qbm>Z0taE=2}D1CRXh`k^NQaWCAGRv!d}8N$b+dOveSV4(Ef&cbMI-_~ZT* zk#CDy3Zf$;llAc{77DK@7th6C1T;fCh7=k;j};amB<`F>`i(uOQsmFAuO;Hv?!Vs< zlYzD`lnveLiHO33f3IKmF@e?A^MS7rA=BcW?%(~tvbc9>9&#phGUg}YfON!}Smw|t zyPRhsgLZO6=5-q|BAe#u$qM@1kg9^TM1mzcZ$j_d#3>l;wcO7pK$K@Bu%st0R$^A%_ccfzECE*EP55eEHv>n&AMmt2|NauTPCI>^xT zJ|@WzDJj`jJ6F+|2bXUQpF4KA?-u`H$pIV_hsX3!yGB2VM|#u(=(GfVLB6YUaW}xU z6dRhpnS}MSf<4G4$1?dV0k3Y#S33`V{c19Gr0ot~OpaRs8vN2BIhku5*>r1@$LEgg zV!BevXsm?yO!0Z`wz90~kkT)LlELN%qL0b_t}Io)0#%g^*$nBQzjy`Ai*i^1cAzg7 zx<;C^1bgZd&9p)Ud^$|r9s_cquw;yDxIJ5RveIK;;o6o=`CKc&Xxo*MrNapHL9HLW zee`qsyEhrMV8pbX}wM^P4_p)OMSX8t5|5E=I;I z*T~PTjWw4*ZJ~9U*MMdo zA8vP~iZ>@V#AP19;WX{fi7EMb(Q2!SbUZ*oma3J6<^B6DC*k(gD8k-dhP1+2F<%z9 zpqok5dZP9Y%bcz=rvzDNCX%c6r1nl`w=T~10gQd60h%^*1ICulfyq}6HaErPJf1nG zvAM8u;U1BY;(^e?;J(fItP8WI@+wLXj5wCYD&}H5bx5IV^|r$}Iu%}2K;P5`UGF;d z48BdGbsjhC_+-wc`nfwIPHV)W7&3#;?fm@G+UkEFM_%8U)z{0bamDf(62v1G%r(`f zkkc(}wq?Tw5T9o_RaoSViRqcKeM3+cCx_}?kU$Ymf*JPnw5MDo3csO1Hl#o^NRhoOBfNS+bC@f&d#~Q1{oUr(0(H~!gmste+masUN5Jm7kUYCe(nQgYD+o z+J>Y#zS1NeZ%7|NS%L;q@r}XR0AS`Tq;{ku&dcZnx&+@x>Cc25D8lWhsP#i`oq2eK z_P-kDy+RQn+*%?HU_`H%%)(@G%kqQ5(MjL@2uagtbr9XEx_a$P8n0$TdyjjDWFhz3 zTyBl<#meV)Sb8zkM?V-iXtFsMFqwCF<4Fd(Al954GsB%_t-RGiqHM3{*VH#ifmiR&AH2}#RIDxkWY$gb+x#~ zIj=oBCi_W0_O5*l95RNvguT)mx%pu);bdyst>5US|b;Ra%@HM9c^y$ z7Z=*+7k-=?8GN$i5EtLzG853&>%=^=LvBz$lI1audD#a>lJyHO+#4wHGV~%{tYAuP z+VMRqg*V+%!CC+VQKM9SbVp{mBU;jW32=s2YzCt;@o20()(zMEqv_EW2Bw+D)V)@u<6YR=!+)@jr zWw;C}mrCb|9f}G`Xn8CbJ2V&@nuhVq8uoAALW8ziL`v4j~1SV~C4V1H#J&K#zwW`OU1f zc8gd0&8%cPRCL8ND;s~xx4Z@5ZHJ1Fx6-4N04>tRMT5fu{eKJ&uBoW#{pVI5LB$6h zb0Bl-AdSFM8-aEd;ilt5-x={(#_XPeFTQ=(Jnr6K&H((31GML+B5hADEOIm_VwoQn zyBU2W&#F3Yxe5%Q7d%y$V4jb6+8ERO2J_PO5*`Y;;OKcdTPIn936soTJxif%?njsx zOhMoGYBAQ$?^&OBI&mWgFSNhX|KYyAe)<`zqwv-zN zV>qE~r1%1!=Q^RfJ8{dN>L)BILZ@iuNXKULf?S}T-bA{{KJLXnmMrD-FM>kG%N*LG zKQ$7k6dDpP9IuBlO+8*@hVD5L^`={9M zZ+=XdN?S4)`zEfe`@?^fI1sj6Xj=CI1_8WDbToIV1RrX1aQHI;YCYtfcVgaMNrGRz zTyLeE#5;8))~^~;f%H{uV0ONEzYIw*6#I#Qa$!^lO$WMD*!mn*6Z4DUL7kcX<8!CW zU5*V8ZA?iY z%BpH>t%aY|90qVbqkZFrGd#6_A!h)9`qsmXUxexyOi;jsUY-SU zIDe*2V!8ur^)`&*itLBcz}=_92!Ebi#j1u5K;@&jN)R1`5+6}qZXGOZT(8Vy_i z8MBL+fW9+v8g}7ps2GIcD+4e7qBNk;p#(Q6e#?=uL$ZANA@h_U>cBt0v((exnb|?PVedtx zAh6bgb*Ivic14c0s^KB|sfjr80SoyIDn*Ce!?y60CxgXD#ucal@OVDW+GKXjWHsU|RWqxCZW zv3b{8TD@TseU#=~vnIb zQrDoBFE(osRfLJ%KKGip#a9|*YJ?U`RK$Sq1N7zSkXS*I{NC!c;sH4|QO+Q7-b|SN z%trC6r9B*qN#(kv=>o~D>S0Wq_h^(>BFxnJoFiJIc*U0KoBtmo2ddnXAkX(7h1gC{ zM1q9NerWIU75h&mZ()oc91TY=rYLkiY@jJ(m&3FTM>HyDoJahD&aqE;hrC!7^lDH3}x4VFv$ zSRKcse6nsQO;pdaE<4M*n!Kh+Ng>0%Ralh2dxB?F69ljg~tjm8J)z;OW z5&n2g{U|L@{WRm`eV5+~{N&hERZn^zD$1(Vxq-Nrj0qTL3O1B_I~lXHpJqK(?4Kp~ z@$~jmL7n=eH+$+NYLWzI2+0g9#`cSA^ZvS_5UHW9sw?#|rbDjcjtK|&vn_1_F9T?z z&X+XPS-gJ6WO}@{_P($3nbHgauM6!)ZX@>!vSO*KNdN2d$=s6L!Nvl8#fwRglKLH0 zKq?}f;%d*$nwo=UDmv)^t1m}$*$;oZk?)z6sr`mi5crdrW?Ko}17Lrx!^h$%wDWk@e(*-Riz5D;L_uf%a_1l&xeyFGjh$yK@5=4n2 zIg8{hAUO#ov7iVA6d47{PzXp)O3t|`ikx%KPz1@bikyR8-|5%=JolWh?|FB0zwz#P z_aDaCuz%FpzrAbiwdR^@PC}+RKGDPG5^zo(kaE$g0MKlhpgF1_>LSLEWr38&j8!vC z?8ttZF!$tgAc2}QxmK)@Xrs0ZfM3Cl<%^6BsJODZT0Z$8prAQ8sU7)rDf+b>Y}k6{z{h2oBKTITuD}0^XNo!GjEU zym-{$_EE4uBkV@dX=sy`xz;36NqT)U*ev+|w9^*9YR4OF`Q>}&FzHKrn$)$cY# zLXIg2-UbV%6DqMw4z`J;QFgcr0*|0MpIEqj*6pf6^AO<28hA$%uW?O8bYNIy|Bfu!p3j7Gidx2?ws-tT#XE;(EWidL!%FnmIZp*AHoRf^6n zQ92*lT?4)ch#=y@xKw((0-|p#3^k-T+f>P6TmyIxBSzFO&p^$Pkb1iQa?fly72&~e4_@KTfXth!Q1bK!axk0ZCk6F``((=A8(7olB4+If z(mhol)AXs|&v>>wWdpn&`{+&h_dlHN@Gypwenz|lX{3Fe{Bw_5WFux+3xFPBp1!(_ zuPQ6SN=gp)mf%Ynj8KegAHrgKRriFd*ZjXqJw}s4bIlVN?BF(rtCz9&{Dc zC*JVeTt!rMosvT$idxlvd)8|@(iiDfo5mVy@A}?Nh$Q6ay;x8dc@!veeAm@1_)E&C zDJTy|ZA*h$6O(rg$|1$6*}e}V+DX3cyc)Ny_Ay3X=9EWyMlgx&E1s~*0I2mdz(&O~ z7@_QGZaqi=bEQW4iKL_3R8qH~`0mlUllrTqWX1$cch$_0H7o_;)nf`cwr@B%gAyIe zn6R{%9(f$ListhcnIw>R%1VNmzE^J^i!Fsz)doG>uuh9is*BE*)6!(FtA0RWMbbx9Mzn#$+Y&hC1p3(h&LM=B^ zZ`zw%23WnTsip@+#z`^RnRgjYMDcNgz6&F~ur@d}1%Tr|gRLcC9N_}-;!^siX>rv#l38CKeGVn5okGh`_tK7&j>i>?koyP#+GQ06#46gB}04*!So# zbSSHNrY8GUz2SMA`RAxAITnMViRyBhbG14FsFQ~3{j$X=D3!JWnSb)Yve!sr(i8aP zl%Ytp+UWa$ug!p2zOPj(?L}WPa-QL9(3i|glZMGMR&7xGw8O|FFJdx*zqNj!7`B+* zrqpbwedPXBMHt|KR9|%oF(C%h2V~V9@Fs!hWr8;|s3k6Gp{};+8F_iru(Nm1BXi0G z#p3T%uT-A2$4E4oRBy@&r8dZ*cHS7W$7yl&i|(;9N*Vr?lDe~H#NJn@$6EASVFRVF z%r2Zde-c=UaKMC5R)tzyC$fa(tv}Qxes8M&b%=Ac94O5eClFh>evOd5N(BCFShqZ9s%twe0P1lM$1ptT==Ty$88fWbJT)DJTj6` z2gQd6hHPp9Le}{c5Yb;apMpX|Hh)hD{~0Xr7tv^pCT}kW^<&`Q#=a80#B9kQ^4uDW zUb|&40LwQ?fIC(7QnyHIl0(`wq=2tqQHLfqz7>YeUAomy5)@B`?{c<1%PDQy3JDSF z7)x|XE$5Hv7Y4h`LhQ~Ex*XwF7$Zon*Gzf8J~*?g>zp|@8&7(S2lj@#j4|rgallPg z@3_r%WW}*C$6E36tU-=ISm#5>Fi0|Xl(Kbv``E>KOb21dqav{6;kLg@{vIp+P*D9> zmC#?7NdHg%u&IZVK9ZCR#7Br@F|<->PbAjF!Yl|47GmF}%RlhCe)+%lQZoRDa=^U-x3I=GQ4yNrZZzoNNi|GRAKZQNDyl}jS zI_FD2QM4ZSW;sNyev;Bd9v&!8tz*W>{MYdjEbNlwpD&Q{i~LnJ zY2t*`M-Vg5ciS;yp+6ss&55XVb3Qw&%9Y<5ND})Vq4!FHrZ!a8Ws7GK+j`?Ic$ebd z&EO>?Y8C^B$}_J)VSOs-PqhOEP{_r_J5LOL@%p*9SsSLj3~NDetmcwudnfVp?tzt6 zvq%x66M)d7eje$7F_zwPQ@TUjwmbcHm z9$andVrjNLW$I8`+vw9NTbdfy!P!iNK_E7n`c#y+OJDt=99vW=G8H_18`HD8<*8VzM+OI&xV3Vvbgfs}&3Qs`bX zzcF2J8@j)V-13zk8n{EZ1XV;QuD8V&T4>vpa0O2aamzcv1khu<4zCV)_v^s=6-YhG z4*24aj5rADjA!7OQ=vM1(3O3xu%&_}z0>N>B%nsCene@;>xYLarwiuU(3lLyunU;s zq37~UKy=whvdrsF+2&gD>i(je7M`5VB);=Rs=3^nMyibHC+;5T3j(eS7i96BS{v1; zEuw}##MoH?i>D`{nucNo%C_X!u z+eX0_ZoDdFj&GX&hN^SfAg1 z{&s$_o2vGtcwutNy$8IP-p=y;N6D5tb}&E(PBoVJEYzbj)n)U1D+ zyX5($9cBj(yUpWdiFi1b1uOn40j+O6YIeC(SF)e@eUi7Bw&x=~`Cu(&XYS3mD0GGH z`kN&;+NpHQDC10a%PH>uSm->HT{l;Vwa2(wmE$xJ@%ouae`v|q(;D(As`&UN6~hzM7PAuzzw=3Ps$7^j2%f{R|(#~HMjy4M7V+sI>DX116aeOt@l38 zskH}>yt_l;XX^EGh>}eY3v|oF?XX$cc~(u#4=Ri4e2__n+=afmyyBAxE=sp}Gg=^? z>AD0v5Xw*=d3vO`@I_d6Ai=)TSzxs(w88$Y>{96)RxQfx4M)Nb`}Qv!GMi5VP{Ez! zCeeuZN4}y?KZiD3pV`D5PlXdm7p5k|_nN6HuRWW(Ix5pvkgWqhz<>jrz%XUQAwz*~ z%Pne)VSFn1Y1u1bWi@5BZq+`b?71@iDao3&igUy)FUPajecS#tWR=iB5g?ZU#xPZ& z*|RGjMAfO^ngZCSUB12h=NDagNkF*C{=SSz}Mm1CS059GlG0e zKTcigvaRpghzz|&T;F1U*SrPprU7lkw)I}7)!azFpVDzh+7k-)I90pH;?Jst#9Wl6 z*}ffkeRH0nx0(YCv=L6(jXGb#EyV7lQh7;Lnc`Gl06pn-Uu+e^Y(L6^3!Ml|-0Y_! z7zJp#=zJwRi!UZUC+zODtCYMKLGAMEc|cgHW!9zcDDlTztwH#N;l)lWbau1oII@gn zJk(j}$U~rJbqE%&IE`B23vow5tiW9D%2t_9z;-FF8h%3W!N>v8Tabw81`HIue0wvq zfdIAY0-Je>ot^XKOWaoG<$akQUZ(7l^R-&)4f`5)=;q!6^r@76^On_!aTkc_7mmiF zgs?0BAsgla`oj>_!powrq%2(k)-PkL6M5kBTrb|BY5lR3$yjo~6?0rA9d#A%$WOw3 z`}`%mkh5ZKg@nyq$a5FAL<`Zc6`kPP178=*X{_ryP5G5Q@z#$e)Ion5O%11U^XWrP zk+=H}s=~O-aoj+f(RHihTHi-b>`zBQlV6fv^uv904`*W|RMGr_GhBV(QLUFtcC1oq z9|;L9*+X>Pk^uv!b?3?;Tvb+E_?j5e4GYhqa-sWY&#ua(_v^Oh0OzHQs@QHDoQk*r?==du@=tNu)Iq{_LAM?-*;kE?Q{C94pW#M7y2QCNN%v z-yGiO%M2fw&Vl0gtnGM(D~{ol0SqiR?}}z{B%X(C8rltS_aB#b^}O?NHTS?1mY6!r zRO4On+$5Y=RQzgd^w{=Yaf_>4(w$CWc}I4I;!uk3zBJ`xFA0wUL;?_;FP9Z?2ZJ}u zf~OC~h{^&t#*UxFDOpd;$~%@+!CPE2qTYbE(%H9KK6*xQQtM12QNHsg%TLAp~9wBLUE-IK{4T5{%p=k(SRu0Wi)7b{CK$u(67YZk9oQ}>|KM(ZVC zW0J)mQ0fukQFi_oOH^vAeN2e{j_#fDQLIUcGJtixF!ERi%se8T7(Ck6~$FUi=#nhobvAkiSeD5)c%eVcVDLE^T%XbXWSAaMtD@?NI z`3`X5cnKmlGxvu`i5y~}0b`z13qo+P$&lN+>a^6$7n;$Er z%B;=c=cAx<-7P7x*O*~6unS_)vi_P`OjfYi<$$;7Sw_xq64}j1#N`C%-krl}|9*pZ zSJufC{h<`sf;hnUdL!@9sp8S5Q}upgk5(#0+#s7sA%46It@un(kp1)>ht|OR0^$!f z5$CULDp-;47ARCY-p#Wn@$eWXxH$wD0s*ziBqZHe^1IgxO#n#S*&?*i0%2HpL&YlyDjy;`OhRB5AQC)mr=7A3N#-zF!XuBC-pI- z1UrBDK@0Ai@Z($c83`2>D{;0fh>83E>WTQt(kYu%eA@nt)2js=qz=K;<*atr({(Cn ziKhnC8PHW93s!@96XX=SdbU`P+%zZns{{!{2wwnKm?Z(|%@huv{VnfdZjnHPb{>>U zsZioYAMLG9u9?t+#I18Iui_=`dp!d^Gbd%MufC^|{SC97ldNgEIXMNs3VPKHi4^g` zC_zf>I8%72oajA0~s7i~L}q0fl@Y)ig}q{mryv0akP=&pRdw>fH3zNTgl%6IG9Q&UqzS^h-m z=RM2H%nB}*xJ?`&`@|N9H{5b#;u8*z6AlL}b#rO*+v0Wmw!LlYsQgp$aD#P({$h4i zjqR+5dj-|c<_ z$(TKe61+T_et!>XFV`T^2 zf?X{!7$!^Y0h%L*=Uv9JABFh+XG>mpqZAD_f!R@3A9vS1Lis&v2#aTn?mRAt=1v6C zNCsxKI^erV@afvM+Z-WkLbTrXLjnSxYj!L3BcC}n*R65&%q6O{nv`zT#7eiOel|k{ zzotr(-YZBMusDg<9GluqV;eYLaWLN%KSt=Wu$$Iogvl-KR2OrFPg8^~SFaXNT7<*G zV=q_)erAIVHxubU5a3{-0OvU;ZTrSn4~$A}qeLm0X8mW=$2-Cqn$xkt!SiDc@4r=4*Q`Vv-j&dmGs%VIEoP_mg**~T@q?nOofjG* zjc)HTi66Bemf*pSF_Cb%GgqBr4<8|0WFOWey1%!-baOI&X?KS8(?{(DI|RPXQu>eC z!=QYs4h1v}LkFc<9tCI237;wmDS*5fpFDY2Md@yddZ>m#hFMO3_xOZEmXE46w%9(3 zE!?yPkE;r{$uLl5P@V0cxmJ5{OB9SOARVv!H_|AUJJbC7faF7&DHoaaMHmtY{zCixO3~Jhu0vi<4F!xJ88;JMn6rT(H|VejhjL6T($rGCB`K z`5Y?UfMzhfZD;p_8cfsw3Mm}mz0^Wq2xgzMB`O3pgeX#ESB{cZin(KR6P(>@^DE5e z?1*re7Ehvn&GwO1p$sVBlwQOv(JC>=g#=1{vHVm%Lb|M`qpKr+Yd5O(1;lM;37BP% zs?REnoO7pgypq%}fV$F8(?BV|qSWsyS^zG?bgZ7;&rW44pX!SC8JhlbWE z5#1)1KgcJmrY2f0mr{4vv{YcBtvdLu}a>mT!pcwr|IV=$3sq&K<}ll=I!l9pOrsyi&>5bsHvNnvMa|* zR}gCrumyk_L2N=X&@caFcRJ9v9vXZ8S)KWQBJJ}^i_wpQN@DylomGiEg z(%R+j3y640)`pjWvC@W0Pg%u|_K0#8Il@jjazUhmmgdRXImc#EJ28L3>H}8a@H-dM z?E{&sPpA+(zR#Avj!E>gH+&OpvQd4vDa#sh@x$+2LZd6R)z+)P#}>povBey&(Ob?? z&d|cJKH!=^i{!UX%={hu(hT`s*KLjGUy*YA8)W`KeF+kXR!lN@Mfjrf50t8X?>n5aloir@l?%jy+biIw251 z^$s{~>pSNT*Hl$u{!y)7o__yLJh~syY;{vwC_*OV6s=^#@T^%IO91i@RC z*$VOOCq=^v*%yl2c52`AT|97409kEVE#;T;CQJQ>8m8EEmD3Ao zy9+DHJPaXNcSV*hbJg2B3*OotdwPr2)b|V@ga)Wkp-;9#rTM;m_#-6Wbt^l^TUega zQIXsO=myH5iw*urAZEhw2^C+&^~eW@;8qdNts$Ih3ExG6UKP(*+vMGIs!IV!>_cbg zezvvZYTK78#(6nBbct7M1fEKLh?ATv-6yA`&XoxG^c>c39V z#8pesg290N4a>*xu#JP)IOerGhBk?~lReYjqdd3E>51BgrPWA&raqUa3TN}68PZ#e zEW1s!_qH#sWq}~dpnpmE_UNf5a!p&#VMemHd$t;;j94hXgceCWvY#yEB<$uwEFwvn z&1qt9)N>%udZxHJNxQ-UB6$+?~Uhpzd9O&!A(4&6r|)!C43tdQVmndky%e z0jZ=sypbIppC-79aPDH$K%DwaiDsQwBD7Cx40q!jC`>D6%kS5jqje>~0jVBeW(T2G zY7CUrtjNr-ha%Cnv!1J5JNS3oz}g-IF9UQ6;pexPveBAggrqWW3)rHzGS}0VFlKf{ z&Mj4b4kPA>9FrJ_6tRr5tN2oS$&BtmpPTXXhh9IeYJI=Kzq>Pg64ifomB|SqY$~-C zsS@h_v^b#z{yd1LR<`;c62&ZTiwp%?-kIOrLas$LI9bc^}VuguZf zb_hw;fBMPweSv^ZN0idZ!{Syjme?A|cBK74>%GK_;}k$MsIibk{*eXw0>PEI$*E3B zbw`K^X>Zu$`z8fBWg2{zMudyQjnOXDzi^`7q7z(*{nt;brVi`gc1P*!b6W#sp@?=} zoS5$cb+XtZ;RDrALR9!*F|tzP9L6Wr(N03y@d_(=3HY-{a86!Vbeh!2`<^jofJfW? zBb#Z6ZyOv^P{v$WTAx{(1~Ho<=kH9n5?4b41kW!;Sf z;Cs$E6}yxB?H}X#Ki6&fkE*pOB-6R)SLfX%mHoo;MQZm*{9R#ZWM_PxUJ|&76BH8v zS1;DTZzlX-iO|2E?fGS|*1-Kupv0DSlYJmQLeF<^*W+g-=&Dbhj}Z&Gn+VP6!qZT5 z37ed{=>iH(+4u9VS>`_lz!DqozW3<-#vVy%+%2+NGgD5U1ua)h%)Z3HRTC4fEe&7T zL)9p-M1i}@zFV7D$boJVSLQv?qHVGPN@tDMll^cl*6i0gq&U`d>>?F_qkJV~gonx9lhybC&hW3P>q}Kmm{D0;Bkjs}3)=lZ=D2 zY#udO`04``u|3yYHQ$Qe_j8@02!jpq4Xa8wl}V_5am1)t4S%Zc?Bha zCgW~{347xW^sBZi3{WM>N^R$@S<()U@x`ec*yJ$7^-buL ze6$Z!RvfMJWdEpl!Itm2ap7Bi*~imteg0vdx*A)0b9GUM0edTM#4Tcf)& zDmHSAtK?RWkBVwaidfDt0d;DG4Jw6cQlpcEbh%N4dq0(8Cv1@ET9nH?xKX=V#U7pE zq{o`W6Mr*%>Wnk~Qg(18|=xMhi1bw5tAhg7x4xN7#Aaejn4gVMtCv z#y4!o_`&!8%?1JgZq@g9tnGgqDCz0{Uqj*k<(lsI+Fa*>cz?s@8pU~G+;U9*P5&i! z79s>rO!niyzlLN9 zPT$tuxmR10c|J-RXv_V^_LlnRZ^1XZ(xZWFe5>w>8@>K5vG-SAH^kBpyjwzdS+URZ z&u$}1*7Ryv6GeaIPapDH6(pLwEgGw3RulwhB%*XW7)ln!F2MN zsKx}?ev&f}suVNYPok;{$-jWAh$ob}XfE6=EGst-duVoyBloVUYUnxRu`%f%DM|SL z{oH`Nw?bzjROuD%wy|Bcx+?@6q6U-`l~^^n0nnSnxI6tXBw^RqURbgy4Qy&l&ywvx zR@2!7PnYHV{zrqR9lega$9zZYC0b6qMaO47Cl@+XM@&;np4F^J#KG;LYwpd?WTnK^;alC zRUJZh8d*wgnW`3OMM_Xmf#?dI;nM*Jx?Af^cHlW^L8!|zuhJ5|VBg?JZenhM0Lgz% z;yvD#dnj;A%Y1g5F4L`JKM%z~h+fUFepR;f#c#f8gl6}W0om?E`7im!G$i~h_AL{9 zF+D;AWenz1@ka&wiEF|PapFYgY1CWQoReHxa3syxp^KE1F(af+>djx5^7v}R&bIFx z4ay8T`(B6g6u}lPN@rO&X-@Fq71-u|X>95jJRT>}4Pgb&G}qkC-zkMDjn0)`Kg zdN_d#ix>%7sk)jUMX#X^n!KC<3NP|$xLhm7^`2{5VkKUN)HL0k;=-zyUjB?_CUcaZ zCLvsosZEtPoX1&kiSrm4a#iOf7UMH>X8=O<-gwX#c%&Mx16p6q)w(rNd)`=Dk4>jL zXue}}QWGEH^w&qB0}(V50Su=-+zs!Cor;e&PK7uf6EcH0$dtLy!1<7P~iN zMK?%WUZnl~x=iB-SdqO*?||JaLDAQp^?yuBlU)D4>?m|m>*QpFb7=0*$dj#e`d$BC zy3g;+#3DUe=I3XmF93~uD@VOFNBAaBRR4b2?-!q%0G$79Lmzze`?9~kwEyfo;D5 zc@)FcL_JH*R%j*4&rTqGM1aaQ2oPL++{rfmggouBka*n2s+X}G3#L@8c#Z*?jPsNr z97eYzQbzGXTN8E~{&o_i_Iahu?&q zIcC|RR%O6y;|*(y`rp#B|IA50#YFl>QM7n<`Qeca$kr7IjFORI{8)sS!!1vvHFs-a zVs{#H;qzJV=%mXQtMZfUSx%9Y`xR%Cwv@UR`JK?Oc+Sfasfdv`>99)D^{Lf(*LEQJ zaB!;bGm?NBBkbmTt@|24BQFOk*O{%XUEDeV>Op*CE zog7pm6%pC*b4RUSjP>`J3U%)sFeJ!`9Z0`QN=)|gA3@SM7Y>tOmKM0u^*V61qshs@503b-5*qyYkTOZJNG2qjU zoqkmyS)#oaD6K+6{{iTh#`xti2$K9CXHYlWlXi!`bcrRNpV(TGm=a>w0<*|Fgi#0~t>*_+L2LO6=i#DSN5jt92T zCoQe$?xXRx+!dPtG?Bu$XWEd?78Z+@6BQ(3Wpda^c0l&5Zx79=N^foUKD;okljJ&iV*ydr9(&p6t@qSmzvp{8Y0+{Ok5NigLTp zBO(8>yT*R2aLFol$s7zAHFp~D~5q4vyg@LL(LNxVa*N~RS%WTP0cU+E0)5jkLMTyK}j1vhIsnGpQuY}8q z96CqE=cc^2z7vxTR;7+K!jGM|dASqw)4o8ZT&3*&6}FRNlr`@K*$I{8^IAEF<| zDT?B!NG%qX-ze=}?9#tGU)PRo)coHnQ4$GfV%M_npk2xm*g&qC$nQrV|0g(LR9%hg zZ<>*I7LT~+`C-(h2rZ?5aCl(X$Z^e&vK{ikqPL;#8XC&ds_celQuY$~52JcnTXi}< zBO$>XSowv<%Hv0x&D5G~`~4659?LR<2|+V5i%qaE#AA>AxCw?WA&?a{#`(bY$JAj^`(iw#qk70WGv|jC=om@f><^TFxgV zPenQ5Yp~>kp4Q5XJD!-CCJdm@6qtN2?L%CHJ=TysKGfg$8xJU?W9 zc?bv3{dDYU;w)<&eGQx=d71YV-^G7({DZfILvS|P3iOR~A57=eO7)w*4HS6I3olkw$p- zEEr^1YUzVl!|>yA=zwU1(0+8+GP{hdhigH#A}b8zVYJvw%$RcdY6QBa>ON6cXx$vB z^McDpZ&(>rIrGz&mztUzmmz=;7LNN1C$27~drSLy-ARtVx2aeQH_V`_7`CN;Ys3uYQhb9Tq1wwt@@>Tk?eQ=w-@k_ifM4H-9#YbJl_q18g-RgZ# zLKpmi!las{C3brY>J{FhU0ZNEe0VjXxZgAGV}6aDUXa!c z3LW~}y}Z91Tr0ggS!=c<%Zj$m*tvB(w*3{>9}2d1h$q8;cz|9r8hjXAd-N2lpZryo zI@=Z7d8v6V@AvsOkyt--Ne!Z#0cJV(q!2W7$7??0#TA<19-*1ROQaA z28m^*z*tf-|PWOyd*UWGo`EgqDrUDn7$p_)|#g z^!m%B-|wgU(>f*}?v(|C#ud#A4({}?zui#g-#9 z|Iytb`ZlX&znLS#Z>D8{WyXPdPEc9(sj2h1i9F{t zT+UAS@hWWn%b0gQbThSIy zWxM^%@>R&s%LpLX`55(Qs?9^t8!U>0TfDt;Q);1$H5SBdl%1+--0At*t0FAVkW4`! z{t8H==i|4If`2_nrXZ&?>_9`dfhyxOG?BTNNn&sfk!r`_b8}C6EvKrQoVs_zoCt&C@iNnIbni$rv(Rf00Nv4#Fm{d&=;KQF6}$Q0_7{*zX=O3OE>iK+ z#oP<#OTW3ovF0>R#57V@8&ij>PC?+B2ZVpZ;aEY=v7+F%*I7pC%ww=8vd&!RgMx>h zKxOIqDr9QgU*`y9NpJsiy)8J3^5%&+9#rPw)vW8X*D{*1SK*09dQrQ2DYbdQ?z)L3 zV5T$r_-A)+(Qg=Y3A8NTwY3{qY_s1?(GJyF-zmEGGf-|RYT`X~L?gEp$%T&QT1R(8 z#ifNrjpdw&tzGqU!Xb0i^N=1f?x{3Yb31L=z=U9?p1fH0dL^Yp&csGhqyclxelX1@ zg{;bu(R$Z40?I0bN-c)I*nMU&K94^@%Hgb9Ts>s=^yzE#jKX&BX9paD6VMxK91IS} zY4gb^e(9rg1S^{Pxn?9+3>l3J%w6teUg(3*_yW`&!`wH77$4b0$XU)LhBygvPFj;Zf{zh`WyK=jk*O8gd*IIFc(30;CzYTo^-s^ag1%vMZh z#L#b^*#7&FKgEpL7OBN~Vc@cpVk=Ajw?7lrJIoHpS7QF&&TPMM=2vy{gd<88k5~`$ zEN)Ke;AFp-0=tTTUsK+-_<4Cuy;)Lc-5@OVO&&v}wic%{3IH$H<17$D~< zACFm`5O#vH&e>v0N;5LT(cw*ZPa+RLP5)$SQ9h0S#`9I7a17q2edknJdd%{8Tgv%u zqbe^4rMX70E-m*am;fkAKJBN?cLhAlntnqr^}7`9`y#VVrBM|!F_zCWk7I>^oVD~AH)5mr6^WNifn;1 zFSX$)MDgvwaAaVtuVAv_^UIW(p%z8MYJ8k!S*5eWP63Oa*M?S0#VGG8(UY^B_6-LG zJy(`h=Z_+VW^yZE9R*x!55Q8gUI^j435yTM4P^@#bFnIF4cIL5ArlVuCf}_Nx`=)c@if!Qlq0U zOP&QuM-vWsxG4s5Di1mix(3dkJ!cb-JcFVwH8oq`m-V-%#>$h-oKSIems!pFw3$f6 z+e3>2wH*yVAX3CT95O;z?S6PpSR1vUGRO6es;PV5sM7;#=UByhUFRnHWyfv&6a@H( zYr!9PRE)`LjqP~v3i0*OtO>`|7t+1LDziI$tx=JUtuR3@dr~d^m^OYKox`D3;GyYpe7d;6Vdt=<-G zsrnLLp}_=fqVc^llKA%LpM#fr)^Y24r~B@_#(95_6aD#xUC#3y z9_?k~p|?uxBwyxSC9mxCNff%$ z384v}NAQHfb>GpGA4$-yhINc&diTrg^uNq%OR>=vX^I_ zc6r&r9;A}D;2PgiIWZZjCJW7g&p0T!V>+U=?$bL(BnR@uKEfCcqyFF*#^7n~Y3s4; zf`hi;0T*kAXhd>qepD$kB?&~A7{w=FE1N|GijbJAAp{aGg+_?ll_E5pWCLv|s+B)R z<6G9vxfQVLQo+J!i=T4wW{SdY*SzAVzK?RQFg*L#%TpWhpx27UARB0lHOrUU)Uf3T?d-BpSR}Ok}4$5pkc+vKSzaV)^ zWwFFzmkIV6Gez{`bjMvg;ls@%7%3}#Ki728SX>^hRUKBM$n8D65(Crfz5T^4!i>S~ zGs;^VkKpv-{BVibW2KO0`CKg(iam-lRJe%qSnRUX%qkOGI1%tX{2h1|hWD+5`lk4r zbiKe+Zpf13(+G&BU>R05w`FCe!!_ex#s)+7)A9#bsSgox408Bz%5)syR^jv_?=p4x z+#>Ho(h#KSA8W{$oy}~b$>RH*V`tvHIS@MJ4ZDp4jO?dgdo-kNgw^Z7=M8+r!>nn; z89Vx+i({!+`+cdx%*&N8r1$Z%+#;ef`d9C!)X?oByjiPH+wAv?-0U8bSGs$5`Fkl- z@s8lb*@>ruKVEW&dPdzB4M5|>@qVYS9eix?W{m=Y7vo;iS_FfkO}p8gJGLE*3ZINl z=Lu3jY5%%g7Y&~)5E3>=Cc*6AE@EbR_Uq$;@L2sEfJ<+9>ZvpnyA+TpgKKP5nF5s5 zH@s=kNn9=3`NO!N>ho;1&7RwqO6=@Gkln$^G-fD5s%>A5*jPmV!dWFEeXJyTN&M^}EQN0svt4QsT3x>ss0S%5?rbp% zH9a-3BdTr~*Y@Zx2)(0(9d?jQ;^DA#03l`LRu1Aw$sEHiK3SP2eIelXe9em{?bcCL zSx$g+{~=CJ=ZEo+*&@3=1JAke^PVswlkM}O56YS;{$6REYeDR%QXmj}(piGd$Zq z0N{@+Zpnrby8h_rZOP#tO)+TM+^>H#+LN2dv9B)dZvE+0Zr=Qlbw^}zaC4Jj|Fb@b z{Oy2|Kat-Wj@s*tW1<7~-F-oAcSAD6o8gPV^Ow-G z!PC;8H5DAI$Esxa`h6cxVzC>IG24jkIwaYJ)_rIK7XHAglYMVH;)@4Y4@Z5GZM0OO zQ*7;fFmqYRx_ZmHe3#zcpADs8DATaaPjuoCn}6#JG&_H3%rT;knAoxT-%^q-E-v$Z z)I_Oz;PO?0bBvuEN_!(bUzuVCZ5#rL$GB6_91OXZ4!YS1`KIyf3~zKX4c05}PqWDS z)#AuXx^&HK7>CqobQvEjbe)G*i4@t1bElL|;SMXzxbEJ&DgPN;Z_*A&DHm00Z#fuC zn3@&yw@l47POW?!l{*n3F0->-B9aw&q*d0&m%Hs9wr6FSN2Yhljx|VmS=1oRPVgcM zCb(7<@RG7a&Vagtk$u4{6v1FpN=n~>c2Me5r2>kt@L}y#rV4nf<_ZK!K6VuGYRTEf z*wlChpPU)ri|J3AfZUq8{NV!NU7C#4-EhQba?*_5PT|q~=FCMs&GVQ?G{WjIkjGb? z^2=F&_i-!NPi^usA*J+gd6Rn6DweB;TMBCvlVh5R>Hz#tD=>}`6$>64Ie=Z&&&_1& zrP=pGOEW&M1IOYdNUN22tTt2Ok<0u*m4KlvZ3uki1nAfidq@LB;?{6X&CO5p76@N4rM6WT zv^W?v2SkAU2mOth7vb;C)zksuvFFx6U=Fg0Vqh)y({Ll5N8-&WGsa1V>9Ue1ypaa-oIc{h|`Lq5i2LqvUs6m}oP1(0^m^y`!4$)~!(# z0a1#G^r{r;y@w)F0@9@SBB6)gyNU`(34(wSs`QTZ(4~gndk8J`-aGi^efQXV`<}he zx#ynyjeEy8#{DOQtYoaQvRG^Vo;9EO%<1fwNOL#UbTD~Qek(G zW{Ydz%TBQO^|=u|y=lBI=OA=!3`Mf%_92-@dEt#MLqm0{0`^tP>HI+bmC*5QO|3X; z|4H35uF&5TR=?Yt7)t(gFY56A)Xk?-4M1rgbPqXo{gI+!Qhg+$ZKU-JLj~;;&|*}$ zLcjkzfX*#kdONJ!w*O96PWj)H-TxD&?~}Jl0i%8VNBZ1wcI|h+qYC(!svLZaGgBPq)koMuUM4rdCN(oS9}I}C6IpAXTH9LWS$)Mc6qgQThxBf zMF;WJI6!IesZADNzt-Ur2s7Vu83&-Gwr77tVbkU9k(`~3 zqRNZs|7~-6;eRoaI22z;k?g$nRZI{Ney1-5D)WofmvT3%4}`)=)USJ?Gp8IRh&8?zZ_(%EvIR+yVtP^+SeJGa;U6fXtWUc0)Op=7$!kVpR)WtD4ApmVkt`5Rn#t{71IoAL-Elj5YnA z5di+4uJ~sMj|M-E#Nuoq-QIZalIf*AH?H%}w>b&%`-MSgs&7w?JqDK|5b{o-#+L|i zSDhbF-t|)3L~EVf^@}r&jYyHV6y9-S)IKRAT0;(Z0?!Gr$h`Oc)Hv$yo-cdu1YhZO z;)lo|%I-8*!LM{jtD5`PY16K1p5LNBCSi7dT(a61$ zbkm1zGxy5{uMCw^>d`KCklNCphd&g=|4eKD{g%uDHDA;#dk?e{>ub1*3$oZHY<9!| zyWO2nL5P5+l@;(A%e@o_5)PEmHmRA*SUqr@Kv=!OryGtee=+k?zG8T+sN@Kep$~2RCRD=j0lAP(;|M|9Qj##Ter@}sf_2FgK^l1T!? zY~?uZGidO{T%jK2u;Ro*nS|_mC6Qtr)kehtu z+7;TQycWh^88F5%c%)C*xgM902>>Er_Wi;T{BrI18B62OY~p`e@$vilY`o!a>~#g) zq+8COUvf?FyQT}wY!p0;)P-AX@um9z{_by?{Dc$JV0_;$!Iua5l+qokG9O#~1$Ohw zRHRX3JWVY6WC9%S-y>IvLWsI+883``l4XelKREko<`|@ymQa2#oGexvEM!4Cg`o_U zXY^QEk<~k4kIuF|sqRu!Vy09`yRd(pG{NQ8U#*0 zv`$5jh%M)OIeo`Af@ml{HSx>2#K}XQB5j@Bry_Y>6`~s(bTq-th))tE)kT$6Rjx0m z-;S6JDNx1JW|2M8E(zr`n4{s12ni0Or8s(+BG);p0(q^+4AbmnUGduhMF2HAAMe9) zpIW@ng5AXsZ)+A>tog(V9#Xm~2wrQyX=C|WnrYyM=eghwbwiFuaLs2vQ3!?z*VzQ}s-6`xGvKNPpzbU*jUG!X?Zu(YVsti{b z!K@9?DuK4NrNZVab4~)IM~(AYStE`;G(=|yoxv7X{chLgaGaWi7)-yoccHukGy=Nn zm0?h{_*MSQhTm9y)un;g=dDF|UUfd^hWm>VUHe130mvE_MuJq2vW&mg>-;~ZYdp*a zW5=N=5jizTu0BJlp`;s;VC$a?)8=j_(+trcgG3V<$QNM@o+tOXmO`Hyy?v(w&V;9r z^!~!2s8un6zHCupiV2%u8YfoYL5uBw;O}!e+@3Q|ZbicBaV&Ffaq6O|UiDyMOvuK&qN2p;Z>#5k~wH3flx*6ei z3<7&=Wu9@RA0xx@cJp@baIT{@^>o;PxodeRo?N)wRmQ9cj8u9Tm!Jmhc zAXZ5;|1$d7yVBE6(^2?hnn~-H+=O0*;?1wBFCW-Z5)2p@*y00Z%u_}0OIcDm8c7qZ zIy*ldz|oQ=;!Jv<%FMH6$TLd}NsgZk*A!@zdv(PdZ>Q%!Tz1QIAD;$?)r{5*5cf3P zCbD|^JMd)%N9sX>x;BEH^BW+$$BS}iRjW>hefFlC;EEL=5F_NIA;0xX_Ayt`zF`q1 zW~?ELOA~8Jm9LWnOtOB%1PqW)gm5tvbKA+>;UaKLmh*y|N}{3| ztM$N}*{N*okqNrp^3ybZpvXg&Sz&-{u)~(mxPK@wE%~|OkNtV+FXJ_w^_I1&raC={ zo6EHy@#Q*X@!QB*1L1fet+hnQAY(lYzxEHkjsH2MDsMu_D{;2Dk{4I9TG+hlF+ib| z{P10<&W^~S_3H0)ojSlHPrKt8kp zXZYbIn^>>l0FL^^=!C;mKXs}!sOIDh!{>~_u`te9P20VfY(he+VI#+?Cs)5TnvX4w zG^sq+RbiUaUEodiR6g6kNe zFd@L@%!2fpv=MyF8Y_Pos)Ez_y5GBl)n04rD5L1>_NXRWh$?c>|4qGOrGpngrl<4l zogWD1p(gD8NQ{0~*CHiN5A5o&IW}<(xN~j$l^+d1HN0_{k2wTj{rLXWUKt=SXN3d- zwQ>0}0nMl)%fbS~5YI%NAB%@)G>*(cM(Z!c#&# zp0iHIwz+p+&wrN^BwLV$kgw-RWq1uKLNmt#*??$8>tDja!?c``d zi7TQUV`??$yV7nBKx@oiCFn#|M)K_#E#Ok56rI?VS@=)DfW$?neZ-BjgY$NHaVxKwiXeHJqvjguL@cz81 zy;}ldj1j;Ymln1vH51@5Hm!NxlljxYCba&4Zj2Hq^5R6>Me{}&^a}&awKVoaD^5XS zSlUKC-8p-lf5Tk!m7FPI>m4Ezp8tLnjgF_)ZynCmcn13|nyHI*?nWIs)%gSmf|<@& z?3ybAe_<>>E0&d8m;M9lz=33Bq{fhqjjK`fbc&`iLh!-B62XykJO z8Y|AzgWs6wiNB|aoJEUo-|+A|d0kHC4IleP>U5Xd^v|k@Ci{3QpAA~KHMWmA*cE{{ zhIg%=Q~O`}XI5!Hdv>@x^$)_fR2D0_w(&SuYcQ|$JYK| zUQQmXJ<)x*JrjiR@c$a_Ai?4EJtBzVX3gZq$ zfUBqTP&EcNtm_-*RD9$Nc%Zj=+?x3tSV>p3kx42=+T^G<>gUPcgHFjXPfzV$!TMK|{D3=Q&lOrMWk9O*%89*TFfx!M< z?v?esH*!Qu3y0%M)I_uUw1OvW!8gQ73^~QAwzjLzN1~C*G*LxM2U|gnzI_#d;Zj^K z(U5t!S;$7{CKoUDljHF-T*fR&@efkBa+)jVR~LEj#UrUGzgD*(=xfy#Xdf4=_47*b zpoRC8_Q)vl;Ocy@{2Ur5W@<*Y#aOzyh`L&-M>f)w+s5#-=#SYey~V41HwtI@r|k}v zinZIG!r3Y=S%v z;gFc240z=Ldjdx&S>fsGHX3azyV|Mcx<~uo@iMWK8=q1t@GIFEjX{;+?!JhSFU!-^ zYCA8QQ2XLshz!xxhl*3cBfl^9d3C8to7Ks7Hy_Z0JEC%wb0FNF7o=|Je7@7n7y*zJ zwwGS<#xW=8jjRVxK&D)c!XGu+;pZSd+jq9>=F$tlw6f&WO&|80!LaT9^nPN*D9s4X zZhxqsm>4#+Wh#Y@w<)P$Dy=|mF&QE=8*1U{v>T>94?kf|K-fQ()TNfkyYxRfKCD)l z1Jr<_3JeFVPWtB&!zlraPKFsH;=_q|;AM%^E*#(U-~UL={8lkND*tnTw@0;zi&o9# zpxI`@pc;Z~sZKHCB6&SBGBTYD^;z|{aFL(+9G<#H8)<_PqxRzN10pinQ3tn?0Fz22 z_oZ9nh>3%zK7j3VeJP&J+q8E;I!3-K*Xjaj?unJPO)cE-Nc)J3kh3O4uRySA;xb<3 zM^kE8xo<$rks38uXq3B@#S=CzZt@shPVnUDBs&=OwU|VJL8Tc)v z4nmn5so^%OqA{z`5519^hQ-IPO$*y&Bx|6gq1kWQmBN=X6H@BCjX|O)>ras)-4^Y9 zJD|!@Wct_g)CV?f?Dq(d%7LSur}B$y1oTmoUBdT_BpDLSYfmMB@o)68uy*^M-vkIc zJlTn7#Q;2_7GDUuk46k1-JiD5FQraq+1Qm+53>~Ow+q`)!Hnw67ZY|mHuWmV$% zKqAsjfj$WRWlt7iExlElj;43|?lBem`GS0KXZV7DZ0w=tn44rqW0_}hroErr=WtK) zPwBy5mM}KU1BpcrNBdv@EHl(8+~kb;rm;7EI3zZz0u+!QY05ts`VCQ4IH5nU9u*p= zUg>=?Wh7hZXsvkXS{J||Bi#B`VZ||R7N5Zme42$NZ7&AyI7V>j* z-MXjlsB<`c-1Wb{^7365t~5<#g0LV3$_1m#vIqPiE$Ln{{w-!?O_Hz|@I5DZ3FW+P zfFUi&EuWQbbEAdsW{y0K3~lQg^j_{~1)z04m|r~*${EqI{N16u#>dW(=6P6cLo0|O z)W(_>$5lrOaxmIzr5!61qAyr5%ruZ;HQG9zziGP|^U@P+C|)M?{IM^7+E{drFa9Et zd9opRfcraC^sDZKl{=|@PE)r@pIxfr&-}b%BGS(F%;SOO=z|!~DfijPAv+R^CNiM6 zm4xm$eY3hQAAK37R^~C0%T~T!&`o%fDWCV_Q7+sn?BP#?-;nw-;7{8A(^xWW>|5=9 zc|qTg%Cg_L;$lFA8fULNmg`-;FbprtI&=x4bS@4_nkO$Ot!qVtWL|cy78ZaAb!zuV z%l6C|U@-jaEP+Vmhm>rF{oj<$RJ&C~X+tjj?K=!y#^XCy_^A1hWXo?~wHXyPiOzTiLs@c(mAW%aKkb7aiT5wsiiC-C+BM94uS2| zJNX63$GeRm|3pL|<9vidg>6e%^^|Itn#AbE5n?IJXcLyVRjwukxa97tSC9OZ5V2z- zHG%1ruT&s&yYQ#H4>DYuQGtYFns5?O`<+nd8g#)Yx8(b zGc@DW*3(9Mh?~*fp3F}*rR^LO_N-mcuQm=U9_Z$UHktiLsY8~%)`!JWKR{ZS5@y8_ z+VgtP>kmo4!Cy_{@JX~?B$%uQNjnahF$8?ZF7M`}(s^zMv#9CG+gRtU+{;e|HWu9} zrrN0wbzFlv0yW6GH>|q6)0T+dea2VS_rL>7J0JMUL(tR-PP|Va)0A;okGS6s;YT}Z z7ZuvtHEp&#DGze4qv$xC{GU20I^&e;a`I&fD76zqnmvdhg|H08Ma9+GRGtg0SV!%NED5h&5n;h#>Qn@ zL2DMe0!K$qXp=w5AI!HCwYq%Inksfn^zWiyh4tfofW~~>eMp!rW|BE;=5_d9{~N}v zQ~-~OWU-G5?dg_s2?S0RrC5L%K8jwm59t4eVd{1kzG?h;NN@dgurv$tQe?>-DRCsu zzb2kpmpsV9ZMz;WpmKTpfcv8Z<_9_VO}4^D4r`V!3L48EU@H|TyHRKS@ZNl-wd3F zqJEtlSFGb%8FSBW*WVJD9MlE&xRb^_qyHjK@e2d2qH(=ta?34WctY>Ze>(xqzL;pd zHi^{zTbVMDG>*-0FK>y4d*An>jelC`y7yPms*`(m<8bYQu4&(mlj=z`d`tZ{RXXNs@%_BrLCy_)?I$)d{pT=dzJ?GKZln8dv6{Beg`KvSngqRmxy!JwWt)5?QNXo zZ@sDJL#E{XX{JdJ}_6od5SG;`#mwy!c_FCKzQ0 z$*`&)(KdHSrm@~5E(5nnE;`jW%U#$@5*v#q_t;go>9F|j5YfqijV6MxzR1GsUH#^U zE9&bwPKd+{qlyA~*pD^11Q&72QC^pL44-e+4TlR(VHXOhMI3 zD_&5QP`!5Z<&=UmHtT4LWg|1qg0P#v^fJ`YyV-kE;n18)^rqYHJ>u*sXDPc{fwB=B zEcNJrkA=DIEq5*eligQwnjJp`rWgzLOm0@jZQ76WJBl9c?hjJ4%uU+bo96WQlo=f^ z&ZDN|J43@`8~*-Vp3$RRot9Q6=lE~?d++bRxr7{;zBQHvuptlsZS#Y&|42kZPc<6H z{rihMzDtjjcVMax^58;NP+no<%FzTwY~sn~R1{$Dzv6YWiR6qWEA)`d*?QFjeFZ~4 z8J4QukwDE}gYtCTy&R^-)IE0qW9{vIUT{|$xw_q%g0SbrydtT~9@)_BWCVYqmQ%A4 z*K4D~jNJU}f_(qtq$+1?;aJr{s-XK@^)CRBut8(OC&M&iZ6&Q|wiS&h(XcvPw&(7R z!6=6WT*PG;7u8wGc|8rojDbXMUe0Pv)@e66m(JB>qN@D221W^-4U?b-yTrU(RL=A>rmzSy4tQr&Tz zRm8x+WwM?nw=MdGp>M*JBbJYrsX8CW8VK96Y(N{ta9eVEC@#maV)*$a>@UJ_%>CmF*$ey$Au5MKgno4ORdT+?dfPqlE9 zwa2<)^oN8gOx@};sJCm!qzsmh_Lb0%e*Mm?pwIs>>QFYe z*a^)9k*r%WM;+;LM+HxR-WMz&5mq!|@MAZJLQ@~BX>9oGZR1?FG)Hi@h41jC>B8&> zfA~J20CNeF=1v%0}Y|6^|zF%aZZk7PNI+>c#)BGldBMloV! z{B4ca80DcYYacKC0oin-g$_!y022Ubs1#IVKdFQ8G1Si!n;q{oEJe1Wb2mEriPiU^ zPCz$jo}1JSl@om0pNx__bz!R7HqW;(VxD7~*In_>U#-w57TxJ;}r!cM(?j<+S1x0nO_G^qR39S#$ zSGROIE0J6&oVwurXa-Qx;T7Tp3)OQ_5nL$FrsLxdgniQ>IS=e4s$riSJeK6`UyVkY4Q^O`Y?0*(IcduBN=3)Q2cdsBJc}7WIKAii!k$)|6 zxMyj%e=)+@iND*6z1L)94L?=%6`_zs*bK~KKUMz+CvWa0S=eTv$Ysx#IF6kS&GdL} zV=^dH#wugg=4zPZeZ9ao3~y4NcgKA{cX=w z+U`6Vn9T2(f>K(9E1eV?cxM!%=!|~YMNq~d90N*;;b38sXx`yEE?dggs+~JAV~6M3w_#3@dx2-4$GJUwgYsS>nD6o` zdTnE*WZRj#G5>(FM&+GZ!l@vM4yP6yl})vbJoEDB+2otAhW)*LJ2mr;pslzggj!W= zg~pgOuDQwFoK7ZYH?la70;O|qRpCV@;Sx$~% zXq!0`(ie-dT5+@RtKr(AR`XH64cSs76az%eock_qeVV}|Jpp25ryjU=zA4PAi@%WM zXTRcq>Q-}0l#(g-n0ELF)o$?C-ea5)s_n#ypq25<%y-ofOo?EIYZ+FGgmx32L#pe& zjIr{J+{JB{rA#g`vx3B$lz(4%7ge-5YJF6LZL>qB^R;plW6oh^zTF<}Q6N2_V-t8;L=m%5i?p?ckFUwC~HT0vNT zb4kga-qrkR!Wx1iSGn8^%n6|-HdyDZ(9)3y<=%a? zh{0W`(g1R32vlu*e@d@HBjZG6Sobs+Myhq-xxUlcI$Isu5;U3Y#We`)9o(4MZsLqJ zry`&Q-2G@*N9Oy5JXMR42UM|>3{Rln!J+dFwtFv!un0TKWgV`_fEyzee1rif!`NeE zMnf=j_sZ}UM(a5JYfUOIFQg68@cb;t*rXVRO-I)q-iY=MO3^7)k7yF?FhqNy_Mj$l zIbkJ`B5j|zK=8~U!Bj=vO2})%a5H6$v<}!R9I?~P6WQjN8F)ykY8bV@_tn`W*~s0G zwjKQA4CRHWs(k&r-FC6)K(sd7!m{~IVr~vXun*x7jNnRKm>AuDQ2)t@fup#UgM_S8 z$0*xjz|fw%5Ik+l1Nzv}uuzF6QeWB&?V6Ng`wQ4HleJo<+unNEldmAuE$UU2Y-3&@ zI0P4bjy(w3HZs_I?uyHWkB4J@mrQ=4MprQW1xLIp=?O!ygS3aGq zL7~s{_}6nXPaI=_iR5bnKfEGqq;t1!>-It6U@BIA36aaJ%>aBV7IFDuh|qz)60uU2 z#aqi~%nhDV0D+@QK*`TfA}CRl=g#||Z6%d*DXC&NILN}p>cF4MkIWs?jf~dWJ`_-3 z60$?3ZMbM2X5utB*2~lA78sEn2p3M1p!2Z)aLMvb&f&9%Xu~4f?;b{FFE2l@KKdq@ zbr;1iGquJ$J5=>k#5Ha;yV`}dh}vNT=Mlv~=sd5o7W%v2CuuV{0Q1GiFku&|f(@p~g z`fXGhmYulo{y|2i_;bq|qqoXsXg7Ltw7*Z)ID*qzqgPce&w(}t-8lsqyD1ALgf zLleg{oeK^DF1CJ-5xg7{5|CnUr$Em;K%d#nM#T~AEdlgGa>h@oY1`VHh_UfTEr zS-Mu9TeMQ9T8u973iu4m-x6=uDjm4l&yHJmaT?Vxd0XIwdOBbA4h(jfI=DUf5M~}d zi|$pL6Iv6ht2hd0uTH-?46M1ndtoyr>=5q|y+8aF?DSy}e}t8Vxx(@^iKM(PIDYNn z#yoz2xF0z)_@}#NpL^MbOgHyEND^0OuDHzsaSqJ5UZo1~AwZ#F1$M*XIiX{)z9MkO z)!$I`rS?m0F(Y<}7(as|vdzrrg-hTQ{~(UQ=}a*S#~LH^cCItNtxpATvP;?HN=Q!F z0|W2QmI3_4>j()^1X7x_ZrFSI`;DzIS>6jglt^H&i%L ziCTWdsm}g zF8e3uG|YX~$han|-zs>Trr_%5ZoXo?{9KQL-Kz)hfgEk$-7I*>1V3&Euvg=8Zk{}gU&EGBQ&gAHLL_SdwG7p?Ie6-%pT`@SL-_0KQqGP_ai|iS_>HIV!;}vI8T5s7AMUU!c?DSxBGa1EDe_< z3|#4N&eD-@^ycp;$Y*K3(J{@ejHjHbnPsSHXItTn31~?WPTn2voktE^(BeBhZT0Ya z)F%=;-sd}+V0po;q^-Ic-pI~|Q0*)irPb@kgu+D+>+`6BtBUX8w`9ZEJDt4eA9!PP zf16_8(WL}i3{4pB3Y6xiKHL1P#u43sBM|?^lL40Rr>t6kF3zW1p*o#GA(_45u)BHH z7{3uEi}ru!TMZ`S*Mr-msGfqMx6=J|{I~>9an5vq*gJhHk*u_48NN~`KdI5MCRJ)o zog2od`mhQ~S^4n;yDUouFF76isI3qCs$~Al%|ry~@UhyoHn)r_Pm1djJj~xMv|oRe zDn5B(CIFZG2D&-Yvsn;b4?W}E2A^^}M-Os>JtHHWcvpRQywHJ7QmY5V`ru6s9QEjp zQ+E6@!oM>}w4N<`x-MO~f)Lq%s8q8l;ZCtL_@w-RVNtfrh4WQb*g>Q%M36)qE2lVl zY*YlOpb*19jH)j28(0XrKSfjT%RTvtAtZpKay@`K-&{oH8(rfx*VtHvn*Dc3thR@s0uoEO>IVc}K0?nh$M zL<|FzKo|Br3xoGF@P%ZAA?H{pJQZ&VsS`?tK6to@y%@3$EW;hjo56loCvE`G{&eY z`{S1r-I(K!=50`DL0m=+$<+H#?Z5Yf{6tz9G4{A)V|va7i5HH%!E0Y<-$%iK`{N@N}UUR zO&RB$00~(F!N*_dsD8Ssw$p^}KE*~nQP*tmqW>HXr;;J>6u_=Zx5vPQVKm#It?~E35O(slt)f zXQEOwm8z2T@g_8meDX*H{=la_03>op)a!PVa7W+t16K}E!;Xmpe>qG^EB)fkxd7)H z^QLg)Qq45oH)?k_>OAj8Hy@RqCN=Do@$4cf^dC$N^my)vkJTGHOt5P^9Pa7TaAMV^ zzN*V#mQ;S-IkMJp^*;UUdAx0oT|!PmU)NXvr*+kRet6XzDmmryM&)GZJ8v!7p`i3P zocPZ79GSj43(q<{JfrDwo+Id|JpdRF8aN3wTf*FCwi|YK-=qBl6%u?Jax3NUPeBIM zXIJUqQ~Hp^rESG-Vmd>XR5t{uRd%Nr9TzFb}`uqPBkt&NY$i+AJ z7LJ1uJb(Xo7KXQ=>vAGW(xRvW>$?M>onTt2^(!wJ{8En_UBL6 z2R<+$Aqd&16sUP%6RhM%G(Kl#brnJYqNY(r$WPWb3So7?2dd-1IgL+q?d?!%*^9YV zo1;WMF0FRgnXLeR&MM)$o*LT~v_l1H5gOl$*rD@y$bUT{b5O@*#WFB__PRo<-$IHi zLs~224~cr#-)g(rI(}DV!^-;~qV9hz!$0=M{akzxl-u2rtKLeK>h}0dQocslrMF9w zKSjTIKfQ?dtDn2Q-%57CM*H#uVChwg70I}RUl{Fp$HEdiUn6yk#Ch~2sm%$9j%tk7XW6PYgq7JeZ@YtXcE&-QxQ*A1YlN|cvzq!xmNR+FpT>w{^3d~=_0`;9Ks{A|C(Rk6IVRl+xn@j% zF2t)WnO!4+J!$+3?OQ)<31a0k;Z>YDd`G(uv|0-?nDeY%7A;;`f27xyVRIrCWkTW5 zQCFXw?Db(4;CuMqiO zFUis#r*$s@oR1@YYT&iQAb*2-%He_&H$d~+_V0O?-;*>RwtrzgV`YV+r980T&Wvg` zi%m9%4;S1h(4y&-RXO>A9;I)|GPN)NmiGA+_q4x@A5epd~^8*Dk-1dN(`kNbOi z$gr;c{*FHKuUVQbQ*5aj!l&1;`nSPY#@yV6SC2206WG7M-eu|2e<6@Dzfy+C_s)%j37 ztvqUy`0{fKxH<>e5*(^sO=)*&rI@GB35bZSG@LtR$~^SNrK9q6!#%u`hYwLawC(2| zrDg~IDD+HQAk{0b_Otgd>zpf%TN_nksGnzu(iJ(oaQ(Fmp0D~#Yxq`js*nqBk#I;Hv4Ag|K>~G$gmq#l)?&zEY zxprG1`)eJfDJ~44{JhQvtI;nro{%%hERe~e$+*`Tc6EO7{tn8C#~D;(HWeG!p-bRH zlf<08R1vzOPlYWU$Q7YGU}$onlv_IBoPGakak z1i_T62?guRUIMX#_ESoj18uG&@&i+D0#yk7Q^VOB)jfTuZ;Mh*GP1IA80eD>0+T(l zJCNGjaysiP(x!3#yg9z~c79@hFVX!}cW!){Q%lx(_;*FaGRWOVg&DU!$~1^-b-+Ih zJc>Z?N;QO%uR3#4U(@HK{{Zg)-?2jSKVKTu-mEl@Y5>;wpEiVK87!%3t)f~JM7mi-3OASJd)XhH+HH|H zTk|2Ug7)q&#%u*O8Mo^7eZWwuqE_MCj^lzl%n`P?H_hjHzcBJa!`xnh51F1M0T+oz z*ZQbT-!1dBt@-n{u!oo~e-rR>S~JcWhX;Nz(wiLbe_KuV_@Uj-Y)8G%p!pi4Y3*b? ze{MYxSwT^#q}vv?$T#AC2D;RG#Q`1fa3a)=yw=n#KGXbx+lrV2yd4}~Gaig#OO;AAnc$Are!q9sY|Sce_4nx^Hxo4oiW=3y1no&1BuORMwKPzSk74>E>{sNQ&4 zS)-7D7Pv`wF3)%LmNr=5B*hagw4Kl_HQm`JsO?EY8 z<3P18eTGxo*Q>OO5^K$G-AZmlGNFxWnPb`}Lz%q1ZM+Ge4-fWkj8aN-$2U3U#9oz& zqTqD879-R%6;dsEhYw@%!isA5)uu0X8$%qO#SxK^IZ)khcvvTIlH^m19Qd|Y2KriY z2-&r+A2_1}eBOMuqD!Z5oCFQq8tr6BOa{7pic$JHs@p*w2kb&4217%`%HRAmwe`Q{ zFKjHh?Bm`x9VJEw9%mBv|}|d21P*Cu__fRu@io2RQcaUCV8q*jMXi6_CUgmrpH3`N-IUeC#b; zaUN4Et$1 z&S~;rEyw+IC-Cc?^W3Np+YbLQB2fx(vPDk3RUTm7&k+HRMx6I$G`ba+*bxyq5C8p9 z|F>sKU2x&12K z$OE;qt$UB18JqMSL$@!r84kbK)gnyAEbjGFId>fD&&x@TwZn++?m ztFojxpoN-L8q4jrGK#P9A2ovtp-rmkf9})YgJ2!=-{NCNl2?E3;@>?)i?mYUllzw> z7h@H_F#Nt4g#T6U=>LXAP*%)W($?8jxJn{;4#&Ne5-78#EIg$wj38h-1qj*J;{2s`?5OV&QJq;h_OJ;Mh@Y_NJ0J-b$xyI7tp5S1za{JL?b+|7<12{Q^4Iu zx_$qs4Lf#!G6HD%(_Wn_d5DiaW!Do&XO>nh=Imxmv@R4;0W4Bo-m>{yEdM}z;`Sk{ zWmjT}IJa&~u2{CMeM~#c8wk7QnzPbk{yTyfYpKC1)r_gbB>>Sl4f<4X)ukL`@1T

    Lqr^ppyW|Rlm1(UA`1`xtA?+nu{v$m^NXh+$``E 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

    vTQ$nz`5SjGsXucL``XPjt=&A_IJd&U3;% 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�yRLn8s-yLIaZXP}aKV$S?3? zXd}oI#R-~%TGxSy5&4@RytHwb*fZ-*1p=jcX@oxZrZm(vcW-p#+#4N|p_Loln})_A zZpWHD0$#yGOKIF9Z6^GP#~n;}EOKhLQm^MgBYH!8Y-tQsSqb*e-D#6z@i6Ji+17d| z)9i3VF2|eH{5+l9B5;EZuT*mn8am~OMY-;2UZmzvr5OP;TI@WoC#Ttct$7%*6yrc~ zmc)oiI{J}8WyRUYi;L>-ntSbZ_V9YDW?BvM)W4`$8ZBpMghs4AZYPtqpyb3hsd^>;V)snWGlPQt6ZShP`M>7w!N+I0vuuH))NbsrUljqoR9h2dlZPv;Ny5AJJFhQLE9erD_4SATt2k_}>{0k$*(@U*ih5Em1(&ls8`f9lsNS(JmNHKLbA z^GX8Csi#Tn@q%sV79WBA1H9^E6&hy`huz7p>Jmc|H!XRNA5dt0A*1F*))PnuZzTrhiB~ z$$#+z3T&UH`z5WB+0XwlImD9}w&B9y+_CLcq3a|&>rz1g$RYjZ$R;NJhB7!UIWpv0 zMqQfGQ(L^5+`b@bO;zi=kwp+Ma#XyjLm;a$^|Kg>e&LP$JSjpsu2Qzj^b7q2{LT3L zSAjkXpX|0~06&_F?Ie$a zp*iCycRwt6zt$FbA0vXGtRi=bMO-siF=(ulfwUbpqLhZUt1t2=VsupY99=Lf#iiB zv$=a$SC;yzx}x0ThOfYi04kg4xFJOEz@K6E?N^i$f~ zr%<1^(-ITIs7ydVPTzEi=PHeRv6X4mEPiREeK_8#*Cv_Rr*;dj8JH$3r`KYQE~WFc z;g8xj6XyZnm@Q#00@^WLbpRw~vWHG?b*{u>Syo(W=uku*#ryeEE>C<5@s7tOQuskR z=9m$h`{6B&k<*fIIHYspzD1?QAvKk0BQ~iqy6-3I?iv$5V77R$;U1fjP@^iDoLN*d zrv9u@xL*M(Ce=hMwm*6bbG#fs$T28oetrAO^bbx}VSwdYUzz-sG}kD?rRMFr;QI!p zpMdn1mu^#r4^RX3rq6W<&m|<@dga|NFrFtg&&z>Hc%Jqq1EN3?*}b#y z%i>ydRQmh5LY+Ut)fN!nNd!mOO}}1`L`K327G2Ylk6M+_FTGnejP0g(Ynz`6NTyw> zJ{p#W>P)dUZ`)AuLSIr;)i3%^Oji`pq5jnnzKe9oMA0=zf5Mwri0yh zZ&JSftp6z~C{cE&Gn;|s=&6JYWuCaBnLGZQgpfJ&R<3iupb-HNIY|MvKRDD)+8uLS znMr%0k(QwJ3Kk*9AvM#VpMEyd(`Pvfot0qau-fc8&+^LfPwwf!0|x~1ioYV5H`#57 zB*DrC;t^64lh}f`^3#Y+ntH$$=DKRAsi9McB#bsItsl%&wYF2mlL%jow#DZ@S# zha#Q7>A%e@;`*mTjyQ|tJ$!hRc{31YwFa0UdTh@G^PSz6y=a1i9qTbuU%*pWpFNII zBswJ{lV!O8(xeq}8`_QA>)D+vfGU>mnpw!k2Q|(T|Iy21xaN{wWmE`?J0d73U~(UA zyxE}^V!H`@Ggy81AZg8Y)jBsbsa(qb8S43c81I&hA_kHYz459XOgC4qV^j?qQwQ-O zD#WCEQcJ4QyM=c1k=uEd!b|hj(av?My+&PhfQE6UApxC+Gy{{#;vm5U$jSf3+*?Pr zxvuNpbkde~Vx^QqaV^D5aW6$uyhw0Li@OsXTA;WThu{`GxCSd0+=4@JhY;Lhp3Jq^ z+H1~l?{UUA_88}k^WXbKM&36(ym_AczOLVeUTSexh;|CC)gKdGbv$;pohE$~wie$b zEv;JjueGE6BC(1ZKj4nR<`O}omT&*GpooIu9y3`i!*%actPQK#5ekBSt8g8caMB6k zdp0gI-h@Oe`3NtX%5h;~Rx3$d83DWPP0P3pTKKc&)p67aH)XE!vbmuvq57K>1C}W* zfVeZnjoSuV7WMX*4v|Ytu*etejOkyroDZ^xxYO$yGln{upXma8R$zp!Lm6x5n={;V z!W3OVzN7cMPj`xDDa&G@v=w$8x*vDP$3>=?maj_VRL|xO&&CldY}_Sh`)c!M&bTtN zCkkAS)XCCcoxksjeBCQE4(uU^KaCJ62uM*}c8tXk6OmxU!jWshU5 zn4Ujw0ofP5jKd3IB;{g@6L4R=MhzT z0)krFX~oRj>fl#%78S=PR^?YTeFTe;Hm0pRKW-((vEA`VZC&W}#RZ;u5lj+3<^QSY z;Dw^v3?Pm8G%=;x&-7z5n&kP%o{z}6!zr@w9E>>5^)2~E%#%SpyPf(|_;MpQt$QvbJf!N`pjDQj5uTu=SdT80*ok8_a*Y3Vvyif0VJfR zufKx;Wo?WnE@z!_rM+lY@8qb=dukjKi9gyjb3iG%#K-fvby7|BGmF!cbSB`#p_FPV z)fXeN0H;^<>kP>c=6Ic84x1J!vN9H3bGwN}48g{dRFyNHD~7c47&S>k|5BD>ATP<{ei`3^9L4jsN2Sj{o8;P+x z+obf(^i?y;v!2-vm6AK4=z@#bY1RP*8}oR<`2Y_o-@=UNUii(wD2jMHA1AJ^uC-kQ z6(W4Ucpd|#r3~s8q8!A2z2@m`P97mRqw!yvvK8xOPv#d>p0S-Ge`3J`9;@4r{N40B6wW?K9}&t648w0m}=Vo}=>9Nf3d)}!N4FT8~-!+m5-X1&yJvV=I6 zy>PRwnD@Enpfh^S97n`08u*Vr{44Y`axKX+akZeWi9ms&zMeRM)+&%oW8e>Cf!`m`j5>_CcL#_S#+sG2%CIraTpLP*Ao`L2Z_}&tR(JVMz(M-{7Yh+eN#vTUswPQnS$! zy-*$(S{=7)v0r6Sa0h0ApO$`7INeI_qG{t}e;D#L-nO2t&V5~UJ|)KyAKyCCP)SKi zMu~)qO4LEUy{G$y>RY~;%3QPBGAfLt1WU~vH@2^kQpb_Bm!ImnDxILuskQ>eXhWD3AyI(3YDxst$UVgus8+OVsUY$W7H#Er80VQDXzI z)eBrdt=D;cWvZ(9a1Q=P`2>Xg>5|IpZ-C3cOTySpGNDn=${OzKjSmJFGymdMKJcP^ z;;hmjNoNfd8GAd#XE&%QXiGi;#{V)tXspgr0eZI1zg>(Z{R)7At z+^Ge=w#a5;l}Abe5Aph{-eed%r?!P4gvvL(OnyH5d=UI)2o7CYFdd?wDDBj8uSG=U z3b(wgLQ{=RoN~S8E`+)N;7)iEyh&-30C*&8xIA9bYT$Crj zl!yz8Ft%{Jg%Pg+U18Kje8|WXYH0)CwLxIyVuOW^ofNR|2hPDzi5ku# z=T*J;w)kGVXKrLadD^fCI|E+wEParfLaMW5`p|-tQnuiC-k}u zk%TJ)ivlXM%C&pJ6yCg_1S_lNUwgpA#Aud~9)-=lk7ZDIX~ew}@I)Ez9sM z8@^ln*sd9_wug}s=alBq$A?uCIO4qnbU&{ z6`TBC`vi|i+O99u8-Nr1{LK~p(>9~@X6@*$CD%TME&*bXiT&)H3H>IhZ-k9zusBYv z^0KYsRIDeB+ZXSFa_dXO+SdXYyoR*L;Jx;BUL^kTZ17a*mOq$TMV;4C7TK6_@wmoy zzKE@0T^Nz4otsH5Rg^r5SIPtpQb-dkq_qQ>Q5v+JdBCBhgBGU>p(vU3YOODgEq&+* zL*RqH+=mZFgC`OLMo;&)L^!uhmT^P8%5Qy$x38>n4q-TahtqG0 zUwMWV34g!UN8J^9e~LON;~_r;S=1I)%KiLYrLZux@s4kj8_{u$V~|QA)Xwa@(?|9A zZoP#jD^(&=i>-xw7JeMYuxqRUuo*!wcRCq987|jPWf$D!iJUd|dutLErkj%dWX5Jo z^zBd2GczQPQauh&lOv$3&i<37PT|EGV_;&ZMPv<>VjmeCUJE_>CVX**-fayrx@C8` z32_ph%&)UtH)naSuf4nFjDPMnJ8&*0w^N@wMPbPg%#Rw{|^cz+z!EtQ-r%M`Fb!N)5m-vtlN(PMPGb z@|Jy;6gbX6p}fdsk@{_ly?P%Jl0zq}ma(!_*8a*HO1m#&Y09xxW(|?&&hM>-sZ)b9 z))x7hx2ssenX6_~jTB%ji+ZZ$h(Yfy8rfQFJC*7XxrXw9Bsr9w&8#Nyr=f}Uul+R_ zm!FMU=xXrj))|!mA=OsHzU;4%!?rAKl?2oA8{XK&$FHD7;H|6c03kmXk@PFj4x$08 zmhrQm&bUE&`Jfda-=K<#GQ$R0bk6VP3*~8T+&#U?GdafEJy=t5cIT(6Lyz-MtH1-J`(!$f4lX=NG;krBg%L0V%t{#L%sjYVYsM{?KM|=|Fq0w zk)p)Lf)aeL7yF_koa___;vJ&!LhO;sg6YZ`_4~3T!?EKSB2r5SHN(J@iF)9ji2eOV z@tB-1@rW8y>lD>?vzXIz;S_d(94I=PjKXwu9*plrLPtO?U+X*yt>4`MD~D}rU-*-S zQ?4$(;m(p5mWj8I#3 zPn%T)?Y!R`j@(az@ty9D?KS6ZB9%+U99jb|4&p1e`NZ%Km&<|mb&oo~-1`L0XEL6$ z@?ii=qr(g*l%fvd!APp&cZPJuMa^?%&s6~rv8Xl*X9&#el!xw$>|>`S+)x#7r(sGu zD?FXS+d(aJRwGX{C?x_$OKr{f+~C{0L$<(ujb5mCOmuK`~vZxI`>P|%R~4;*7@XBDEEZ?g!vqYQ-{G{MK| zw3(Z#)P8ZP#W%l*NHaD6F;)JbMr~pm3;&wWe?NM-2ago6&n8I9OzKAS#-i$O=R+y# z8+YpO^G9zf5hps%V7qzW;o|RinF9HnCY?Ub^T!ugS3cdvM@7n44K96*UoBpoeENvG zU7qY(%$!=TG{j+&ns*qn#Ik4nId8%|0yFr8b2)NDim3BGYk4>cfH_I5)=PlTC|znj z?!#?~NC!2f|K6|qTl?yB{@nL^J)mjXG1C+^y?sU&kF>i3q%bq4Izd{1ujIwia2=jYjq1zHa~mkgxz;KduJNB zvtg(^g?X8oxp^;Ool%%85z&hafW7xol89v0zRgatt$DP2NO;)Jzg@)ZMy4W zkqGo`Rau~%@`a7$Y&C$Qt)$_C^5z>-HB(*C4*sRNkJyP_qNclCW5~j~Xe(DN?Q6RS z66;4-R9bht8|y169h>+Cd`EKvzxm6$IO_zxB6RmMKLyA3^Uaagm9og;m=VSc?vwOr zvr+#InaeQkg3vfA29qe+U~ZI1?U0z{L$@C{@Aa9gfA89#rJCldT|0G|E}4m}|9yMy zH{I`Kv)|zhSZ;3n0!yYtIg6t6I+a?cTdl+&k^{e&~*+`?=j5!INb)V9~d=4ce5Hd8+GKl2E#;=q`I?qxn zY9XXf8lTz7S0-XA@Ch7ovN`i9a0J}g_`ar5TL3$ycoS+;Or?R1P@sXhO#C#jE4V3p z{uqDm37$C{XokRdtewE<qXU!!_U>g(C|(X~1FJEr6XqvCH~J9|Fz$hHXT#rp7j795kjA`ZHu zdH_NyFPFZ=EbNqa_}DmYbj9?Ez=QW8x#7vkFU1Owhy&49*67O*xTry28Zd2*# z=nj81bX-D^}<8 z=Zl7m*tLmFm-6QqB5dZWRi`yO+iPOgOBjL9zWZH1wA^BswN0x-B-`9#{hk{lc$(UP zQkcCmxK~J9+TVu74hwo05$~8*(E_eTYq_bupA2sK-6#MI>E_~HJ@+OqfLd!@g*LnO zr=a3{ltkc@kV4LX{mL{!Av+-4QtcngIECk2Ip?f>^odr6ufUlpN6liv8KjkK=2)I0 z<>{b2Nq=+w-yO;elXl+ehs#^)IHa$f^x2mc<=DW#2)Hy?iYqV^aOepEfryIwq3wV2eg1O^&f4R!$^VeoK{}UWl8Bs4vti>Cr8}^=mo) zujxBAB&1ClhGb=VWktC@vh7$V&w8g?=COp*aO<$_T5jzFGpH(Vg4jSky!~PGdOrqu z&ppFDi-THOOs(}8V>1wUbY0xJ9*w>8kb%!Kkr<4PapO2w69>eD6Eag9brI=4{54Wt zICk3Us6WWPS^4>Ii+$xp5|@_3je%F6muG#(YE4hbaqHg3S2budX9wU)29r0GF7=WiL3Va>#mm7B6JzOYcKug91YH59a{JVCvBSl7Bz4NAc>mKioOSMY9e7UrYtBbTWar(42 zQVISjRkk&TyANOU?e*Bt)>N-F#f_BB#{-)YO>aGX#v7u zo3wY!wJ4B=#tKTqWFET1}%z%$z85bkNI2Xv81Xl?LO! zzoI2o)O{fS^&CWX9ob8@A?Y_8%}aWhe4-3;OG^rylgnUo8{>FyQqEyPxZwj&fqxyf zc`9C^Q9yn6Y@{%af9;H3OUAHBVW4921wo#p(+bV>=(PCS_aw(C4B5W zcK<{HoR`8M_&G7B6Yh~r-jmeWZrj3{Z7T}S2=6E>j9ItGD=h2L9spQ*cmXcUTG|0^ zkQ-v=CHwWZDOQm<%w1xh1J$KCIAW|bW+1g@g(`f(FXl3ar`#7gi5TLY)&sgb7o|-- z?;Us~y)ewRVZRs|N}FCM_BbG%lexB&w%4$uHFEU=Plc*M&c=0(p^SsisRDalb~cB7 z^WihmvhViX5BJ$O$TvkPcF&W{w9=KAFM!Bs755@nTVFPp2j|x*xQ%IKTQ~wmocM%h zs7>0BW5_a9AU9b`W_K-*;s{xEU-^zNba$QHF==x_!7}nS!L7K^t||ZZFO9i=i!VG1 z>^7F5b}VdA%mUmIVb=g*=xU?X9Wl1cvl#yNRjHG8Jz4L^>dugk_RPAA-G*C)^aDcU z;P`d{s;6jO8r;ZuaxVVIY)YFO_cfvWwF;UlXc<=3IVa+4FOR#T!Zyn^3L z)j42uKvy!u2uO^}TMvthN_&q4X*g_>4es9_Q%nxq034<>h1gxVKBbPP2It#%SSs9{LDy~Rt09C!l4UfE z9O+}dU+?cXxMVe-6Ahfwu+>dFHSa4ArKIxigP1dI?~MG2%Hrczgp)FZ=B!2VKIjdr z+GYp#-hZN&F2`wz8|NAIs24XaTQbtqJzp`&q5r-F_)IX>RPcNWE2%)>JjTN73-Pc z#}|tq8x-fc;infwu&q}>^RPK~7bndrd2)R{3W`R2i`^~iWgNAS)UHECZ5?zZ9d^%7 zV(e|AHu$H9$)1Y+EHB_ZI3WnU`F2nTb+b&dR5U9LGKe@b?n$gy8v$G35D4xke*tS3 zvD()zt7tMfTCTs&d3@p#&89!qAk@7617ej)B2*V{VaA-e1^!Cx%D`Fta!%0*T#;;C z%mwN`-UmHM3#_s8$RMYxLsOvxi(z8+cumF}QQCP0X55l5f&_khBt>U!j$<#FQ1zS0 zFC5pcRj%L&iBNW;1~Z_Jjy*W4sP=q5;T2Uam4dD=<%8|>#D-wri+~2Yc0s_4Nmz0Q z%WKQUF8E^}nc{mQFH;~sNUjrvYiL)TA-IuWZ*aqk;o#5PGu#@fRxCMfaxW9WI48T@ zUc5?7x8mf<*5xUfxB}&v@BHq?0y=V8sM?Vq7yY>{8W!b zS2u#q&dDBB8*U3l9mam163ZR}&9`(3K_5E99F{@ap~Xfg=ZizR5v}PcJg@O6eRaJzR}S z9QiqB_6{sU0JNEnRpNSUE&c6raFn_1IG&9=7Xi~+>zLkr8hm%Wp(`XL&*Dc7K*ym4 zd&>9C=0F~PqCPYcx+Et*zQYDdg`2En37FYdaC$|*;X*Up+3e{HR!`U(yG(`TUmNxy zN66~No%lE3KM!c0pBEfg{djmt2 zY?!dVc|C%LFzBkQPMVB<Zf7pwHH*_zDO%9ELiVo zu75YR^lkSLn+_9q6!qY9>^?3>G1+!#8ca5MjTanKs!fnQp*bWw2!&!UxhT>aiA`I8 zBGX02p3ZnK*!V1a+(b$olL+Hr;3H20{HBfoKDg(c3Bv)gU^Tg017afx(o^B4Mnoy{sah;r8&OqLr{ z;ryvD>XcH6Rv;9RFz>%`mMEN|Y9mMd=V>TVtV;a2Aqb85O+;4J&@ql@VB4|LKpmHy zB_}i0LziMFji2JT_h{wZEWew2iEc~+QzVyn@l#QH^51(G&gYNeiT+Z0cHwSb0UqD( z$D4ffkIr%%6Vo=df0R=U=9ISTu$9%IGolhI`E|0qZMirK8F@+Zdmp0OJ~ZD4K?zYw zK6lSa+N}r!(0Cmc>`CteK5+rnv~5X}_}^b!fM*RJa{YW8)7pNFYHO+s7sHNnY_+U|Dk!E*JZf*Zg-jA!neY}~yCE$tPxhS7N)^W%3alP>Fsi1NApL2@?X z?>F+UEzsyHKcg+nWdy08d2e|3YTQjBYvNL|tTcjLjH)Q%=Ir?r1=;-c!h5vyV2hmS z>vDF7a2fLHpB@TTV(sEafUrnRo*9SX-ft^wS9Mp1xveq>@b+l@!N^h&vxA2PR^zl) zI`SYr1Lyovw8}OW_g&)pEygrCHQuH&HONa>malvRhj#8 zeW!nGLh(GR)#1s~4Ukl!eGBjO774```|~>L!^Q?K8%=3YXGsh=k8k+i9ate)=r2I{D3&&Io>5naX(GNgb~fuGiXqm;2`j zq{-b+_F*91{ypctNSdxtO9INNLVaP+<$B}GFu%NXqTHF;6LE|ZrdS!KLRl#3y5M_6 zs5LU9Z=<1qV>_ce=fOV@tKmdnxS{p=>?sx$fd{V&9TD7v>l{I2(qg`_1L=|IBsVd%!iiX@ZwB4!E_rTDst77h29l@Bn$EercqDM#7`L0JzlBcDLOaVd2$E%qIY+j z9jyFFQgHR~+qfs1+SpO6t|ZOf?RK(9XJQ05e!ACV51*+^&#+`iy_s)gBO9HHf}K9_ zz@$1obK$>VGn+41qe*z?X~5kda(7F^L=klKHLi=|wL~#+G*QG@72hMGCOz$eU#!~! z!@>pWf%r?o#8z8%&J;r?2V;<{er3-xq7i$)9A|oG^Q64&Nu@;BooQPGLa$)!N|8EU z!wEvezTH5&s##*U^dv7Ad0S8i8>b3ZVe5@SO3WiLNoIxtCHic*N*!0Bdb1Urgk>3k z$Y0yobhP^*obpV_-VQlyl3ysyZmar*I%XcYD(FlbWUS*_A6lBKb#;19DgfDk+=$iG z&9ahHw7GM7du2L*y_~YnaHzLKEWUPueX!>FJvINa7l!i=^wzM2fYUnqsA_CEy;Qir zpbr)<$_v9dR=Ey>4>!;h1^Wg1^GNZXM~hUx3>{$OkVCN_#>Ix} zE?y3XC-~*fo2y@di|=#PX)xw%7W)eAE+s~fwfqGC0lT$+quurO!lWG9o z)6+5a@pH#_0RPR(d^BCwK5m*>;?`iTB-*wVc?H&r)P zk!dS%L64c=3uhkDF6mDd|Fv8|Py0VsNJM)7jaQjx_*i0&knXkt<`?wHfQzf-=DPV8 z5s8BuXR6Qmkp69Oou4Z?G(H@% zORZs!_=zEK-H0sLMC$iJs*he;#|Psc5lRVJ_@SE{3%_Xzbq?o^?{0>Dojnt?wlZ(j z%_14baq6GqeU~3R(vVP2y*+a^?L2|hK(ugFD!5Eg+%b`emU5V~!7ar!?}Qiv?Y7XZ z@Pao>ZqEc*nU^!wxyuA6aqj~Vwo2jVKvy9UE_+&g&os4MSvihRUT6i;BKaEj!qex~ zeg+ja*Cn1F6IynKwLBpu#4tWL>Eo2;`ur4#vuMGQ!J7~m^jjA6U3J-~Rccn~tJ9nJ zJeolD^~x%*GgsoZdSSB9=T&9{1O4AwA&YRk+WVJ6E5+p=e#Zzzo>7HrQ65aR&fV0`n*32L7XjxLYsUL zGJ_?FK{f*g^D1>Pxaid@uet@SsTx;K=WtydD8Q*}Sg?{OilsywZw?0cjoLB5ij}7l z&MzFY$Eoy)5)!a1;5`23_*_Pr993soh<0T1pHee_;4W_N3K_i2oVX?=>8-V^W4-Yv z@DnPis{J-zTi_eX;eh|pezu#4xqn8}y3mCufaQ$uULZ$O?tVkax{Ck~d$MKQ=7FetB_*Sc@&rmcRdNXke=P#pG2lJ^i;A zt{u!JT9{g#pPpZ>8x_-52F5Nq>OMN*_B0Px=-9XxmNGB%}IR1 zz)m%153tHCu~(5|rtWZ~u!p@?WLWKc5I-SRD?BU%C%2@82lvYQLWMsoUQ* z!q|K#2ine9;(o2@^c7x-;qZtLnGoBkVB()5TrR}>rmqvcpcD4xV>Y{BaXaT|ed^Jv z6VjLM7g#v3x}~X{&kstxwe*W=Q9|BMoj`(l`=OejZT8ON_IC<9ca#~h9EuMkE@&T? z%qy+ZBg8aePDn`Wmz@9ZU-(~-ZD04rE;=f{EZ#D9GgsST2&mgw=$K9q5B?n7fIVG= z+svi8WmCUsdop(rA2TtoQ2}RH!|%i>zUfZ4TAeED_)1dwHvWLeq#n}yD-9x1EjTHf*7hOnrYJ5;ZT&}`&Wjir(KL#J8q#E)Mdvt!F$ zZm-m9?rv6p+QRQCk3Yam9EpFc#|pmx)*}J{If+3xEsd$SeuGoh&7|)p7Gt0W+V$(@}N{3ux6#b zsIEde2${{OKL}sF4lv7q$w%u+7;|_PpYKun-0mDMBX>xXsg}*`kbNk%`)316TL^(5} z>GFtSa>AUi;E7cRhp^AdE7uP1P^yh1r~K0n8QC$aiO0`bS;6|_`lHjtmDUDz8||lV ztvgx(mur;7wPdB>TuG!0T-dzMarSO|e~Y@D&27Kiaawo1oNvqUbSqeq+*Q#|14rp2Sf-#ayeAmgTqqr`aR$ba*=Yq>0$_KU?kxRcc z`VolQ4be`Ar(O{--jGf&f+z=%xM?$&>)Gxe+n2dpF3r%I(V#!D*27;86Fz>@s5||U za;&V+GL>OcH0m z#XtZy_VC(xZJBefXau{nK*=Uumbay4S=-y%$zPznLVsD^a*ZEjlb?EhcqkE-Na*R< zNB)!jr;lu1HEJd&5UQGpZdDakikw6iZR$R-rz?q*H0+y{zXKZF!7q04VXCEA$k`C(UK3oS798RcU8VC(mm$ps zoq7ZLnNo~qH)7eN30l<*%BsbVsvs%1L!6egL*fpSCo~RM)9+dVK)ti2z}sCG(`&k@ z1#%r)7amZ&+mirH(NEjs_1Bpzf?d&-JeM+Fy$;+UlV@t$uAnGI-)*v)bk`pcUGiX5 zrSsg_$OGn~>SW>A&8YCCI^jpf2t7=ai&maa1~>0f3AHN9192Sa#+#r{F?HF|BGakI zBPxFsjgc~&B+l+1L{^h;PE=P~Q;sg{uY&9Wm@+GaLqVD9VTc3z+X7AaYLXR7x<6ty zk%FH?aW|K-pyBEHzQHtPtnpx}fb|eK25f?W*NA_QBiqd9bW<>mT~Y-#FIZZ+dxaE-r(3QDk$%yo6}6^;qR~sM0^O+y5FFXNAcnuJsu^pu%KARnde@W|dEz ztUNrU+SO{d^cDFnJN~aDg1%0HqBeOydUnHSKP(maR#GRH@+D$ka)o@T$#)Xs1Tg-s zv7It>Si|1FM+b;aHY1!4#xN{j4recL2JwD)ag!mDI%yABd(foLg!GI!Q*46WCCiKu6n zkZva*?Ozo^Ull7}yYWhAo_eK?MZ%%In2jxp!&Kq=Yw5LPj;T@N2i(kPJ z!BmH)T}^HdWLFCMBv^JH%1|huaW7?Nl8*B;dClP(T;9Hvf3vG^-C^vDVl9|NvG%}Z zo!)_i7OtbDCP?l1c+SPTJd~-I4-DIiR05?A+u;%#Z~Q>|k#n&8DP&2L=JPifyXq^? zZr^f`O#V)TjQiUF)aHULM{0k}UHa>rRsK3qn!7`Q+FZZVNBicB6A^Y|Q{H{bzMB>Q z>p;Nz0`s!Tz%a4v_)BRCJUr*K55X5Ee;Z&v2lKN3+35raYNqZV9vO#DwP0wtt2Hq_ ze_#n{y-Q8DT|x}wr2OZ{3;A4hXcdgNHZ_ew$Wx>!0bp_kD=#S&c+vm(B8f zx|Wan!;e-T{!;pNnfYwS-~v!(VZb25HYr;5N#iA!is>f?%cb~W4@LZ047v6y=rRQ^ z*hwt7MFuQv)~MB(tQpf(osba|-TyDEle3NgN|?YX_WnOHZmcVR^G4Q|r16!cu?0%& z@xO3$v`NMZ#NazoN}L5>WCha>)RxHeK^tWU3>JkKw9bA{+uZUhUnH#H^w`yjn&Yh+ zl4g7?CztUGtJ0L&Ddsp+>wa-`)A}jG#?wjM;AY&MtfV2OhxI@m6ZEaeRBh&tEa!k* zQ)pQ?k98XWc)T)SL=sqD5Ompz!gDrACdY_ehh#dkCiGvU11A;_65S6@@4iE8hv|w7 zcAvP|(;la{pSan@%71E(k@)ehgHH6GE3mC@V{aBs0`M!_NyV5j#ax$MiG$MJnymP? zM8-4NxMmWVjy09|5_6W;CTh?&wqM`Y9v|~Q8wIW7_#S)Oj%+jI%sFQ@@{NepFTG>W zWQ9qtPLg_^>6xcg#^Qp9HS6u{H0|{D(TrH{7pP`sl$yKHZW|>0C&VpF@qb`tQ@){M z8#$Q!m1*U(_Nf}yLYL(;-t<7_#f$ZdM8Fg0b8#uz+xf?l;Hd+*ETR|jh!;I{OuXIP zAs9E$jOuy9)KKD)YZs^#fGZxn(y;EHz$fXxkEwH)rw2wwIV8q(Bi+7m;Mh*mm6AtV zjf-*h)zY7cI;zju9#2$!T>Q#@TUQ&6Wn&EOd!ZAoka z>x4Dm-rL40`3}aI6NLP>zQ?ys%6hP_20JoPAOeNQR*unZHe|aSo<(?&SLo3EquvY^eUkI$MOmAD2i4#ewJz2|#amZ*?lkVjI%!H5@Z1*F%Q) zkrPhED<9`17%3%>`jYn^@tK?n_QZVhVVyw^B3{(Ll8z`!NcGu%oZsB(bhw>9G*GSK zRxk`9Eg`HAVQe?T$#KF6)_WfY7Yn@a)rz++|NKS>Th-7k?^_n>SS{np1Kd-s09 zb#L%`QqKD$f4SskHNuX8Wp_Ed`-H#xQU3yfO$0#Nnqf(pwomTSdRCL_Mxx7NGlIXk zMFEuE=sO~%h+Rum?4)T}ZDeX-04> z`^!CpQ}U;8UdaHYFMh*?@wcqNp=xH-9RP%?zN&KNDd^iswzj2 zW!X4CQRg#x@5~r1ZHxLF)>FoE`b@#iNiEBaZ;KpLVJY*N1-BiKaZt)iwYX>IYXI*V z2Yz_X@we^Oc3g#kAgdA(4-nos<%aNY|#L2&~Fa{i#TLYNgrDgI?j#0m;L(xZhUmRcx*jd9>`B#|_dhEsFtW z7u<&m6zgAi8NXPkq2@k{w(RW+N7bGj1Uc-X*)sPFKDRC@)lTg1!6bBuJj05>Mpj#| zP$PCiM{5}q2^cfQ5TB!7F;9)p1pCN|4q?xBLUOJM0Qq4MLu2}RYZvM+Af}P?rznj@ zB)WX%l?B@6=3htu@-6?nEcCCVzh-*5TE3|dX=|eC#Av58tI{9kg@iB?KK7eKXtW7W zw}p=t-+iRU=%8yMMZT`(ex$j;>;J$F{#!!#&!him3ge{yO-(_w0KSe5okvU@B6x8s zqW*$w7HH=*5SCZIyzo4{jw8Iu+fRww+I}6olK3dvP!Q7J zm7in-siN1Vs)&mE0iAbji+e%4FJ^=a_5jv}Igkde+5}w{Bf8@ZK-S$Y--ogxZfVr8 zk?G;(sjEg6&+GKoh*R^d3EA8{0i*leG~I#-Z{r~EJtV|uHld-`TBT=y(Xt0%OS=N++iZQbAb1i5-L4aVmXK5avt9Z=DDH`6WMe`1Q~T^Ccfx>+)lH zefOA--4Qqt`RKj5Zl$%6QwekHfGqZAa0@P*1V1YtY0l6(&xMEI#9HD#~+9{5n_rl|6CE z^V_*%xi$Y>MrjQ-XnzztjjDn&Pbk=Q>~tvt+-!6~o#^Nq-lphusXJo{O=#{I^WxaP zTFp$V3We>q7P^ zUNvfc+BSQjF>9YB_#k54jp{ap&he(F=J^xqkB(kJ=wN$3KF-!7lyg|nmQl-&auC6= zRmS|jn_^5heE-YoMktD5aJy$7%`(G3gh&_Ys7Za6^~>e{my$)bUM^nP6TL|c4wW$q z9Sg99WvuG2O(bm9WlTcAW+!lImk4CB-47O;3&RIk|8+BI7|gt^1^tHsXMOq=X0!bgx_Fd%Zl@DvWOZnI{gc}s!(S6( zEq+nHJa9&9w0Pg-?F7_dsg>|CO!KFI^8lbv?^)}fd2v>Mv#H4%)gXOlbtHk_v%eT@ z@?t|<9ltE5=iJ_ILZ3%ZNc1VRb!}+FAAHWU6}pI2fivrg|J(bg$=$A1M4{}nrhe2n zYTx^(+4)~5`CpC%^%s$+hPZ8W9*y3hX`sqb>%4QmdpWfaj z)SR}QI$R?3eZ%KI^Y0aOp80&jVD}#V@34EMdP8S8l!)s$)?5gsAvKIg;d|P#yk0$j z`%iv~$UcT<&fdxlItR9U`2pMGUs8O|g|m!2zi=^9H}9;?`W9rDjeyvPT^n2eRIRd{ zVQASLvrvXX8iQC$0!Oard8QI@fC!wuRN({Y;rs1XUZo0;8DwTaJ#2!latS@yBlsB8-r6v+Bcb-wL zwqm9M2nhRcAJ!njm;!$a9^RN9c3(}^-Wol^w7a4S>kRP>)2$7AX#f2iG~}ufgnT+x z@Tyisk-fetXHkX9McKbR=?ni+hyv3L7S?f-O@)9vkIMyB{79bgba66v+6rCRwD%36 z<@%M^-Q(2e2ED*WC{%WcljS)WLO=dlym#028){0rt>V89@;I5US8wu28)2icZb;u=q- zAuRIkiyI&{`!nb0(F6a2**55;g&q}PfX#fsqiXFGG-`jHG z)^-nBgoMRE-YQ!NuYvk@KKGv;X(d5tw$3eL;G9b9<>f)8W&Zw6f%o>Qs2uL*Z)%32-m^MDjqL-G$4psstj9=+Ee{o*6kO8N)adwu_bz9M@tEvmq7O}CHIJfp<|tws_8sGY;DrvA%cf2xKasCl zxfeM>IH{;t?^52_877iFcWK@{B@I>Ksb9t?(@grA98R(3k$tM_GLiPi;}|&K%TN7Q z&|3DuHX1Go4)<={9G&*sv4?4>xX5f|OJqG{4dNA;gH4>(oRpR_0uvUFX)T+}KTeK$ zgMB(3_(HpANZQmqJ(L$XL0yemfYae&5`AXAJz#FLg3FmcY;-G#xi4*QZr}1F;aN&* zs86~hj=^*}AAcBRWc&#*glR`vNfu@~2Mc`riN%c{28vmeC#IifTw`Gd{93FgEn!n{ zu3Fgd5O&D+8fRK*YPF81>r;}}RHFXiz5cZ%KoJyx2Yn}+I<6wj#rz@|&q|~Hy^)6C zKSUlGSEfPKG%8W^76cjwS#{)&9=&bOJH|*5;llR2G&aAN zyB{6#d=Eq=GaJy!x-W;#$6OCyA)WnP`L4a&7zZ=(##u=R(?7V-7w0)Kc`8_p+9LeJD@|6{butPcXln?ss0UInQ#1U| z(%S{XqDmI^-)-ly=luLv$@ZPFzprjd^ZY$ag&!5> zsuz@SrTC_e?ao+Y?+TnbUhcnik^j*REB_SbE2PavMLYCK#67wzHd(_#Ak89raRNSE zXroeF^Tv!mMUT$YMq``xwJV^|_3KFgA0pmLr-<1@SKVz!=^{97(aP{2qP~+uvdv6- zH>cvS`Ia9F4k+VQgvEEpQd={ReG8o)?_mbK z1Cs$*ZNJ;V%_d=iL9$N?s=0<4Yw>;J*6g&20hca6LTEpxx=-R`OYzo+SHnP zgKBF+FNl7#zS#dV(6#~yemp6p#4J=pZ{_UX^K(il|Lsr0D;rOC6g4L?I3kI|B_g~_ z>a}oGgg%tbqyO?&Y|`kw(nw*4gKV*~aI)r{;|R(%BToxqb`dx**-CTXym5 z#gJF)^+k)I#Fdj0w`)bph)gtO|7eJX_N(Tb#*RhS0^>k0?;UjcD&YTxI9Fq(5ss&)xpeN(bhaH-*klGLczEWaIX}) zSlA2!k}pfZ_2hjvoziT#?ftUUtOR334`lsy-yB#yK>TFvq@iXYXo(}D9#rXF#CF>r^NZp}FZep!0~&BZqW>}h$=eyWp&gH?Dj z@B;X7tdAofCPSNt!>~B5)z6?=5Ww8KEg2XV&eJ0}fszIe-<%i&j?2hN=DYn`2tJkW zz_8|eyc$URH){*OMMM_2dnHBV_#0e8Twne5i$%>i%L9`>JwxdTCl(GPI8+uRl?B^m zg5QV%>gzEiITSf&D8SrvVJMu?k6#2Rqy|TMtVC|*p&N=Aot5Coc4(bE2KL@@o)_UyY+O{q>HRSa3 ztjviOwxn%6K?CxQ;%gNNlqFYVVP+mvP;X{AWj03A2~mpEO=m6sxliAcd9fL6YGY+w;7Q^Hy}IL@J@Wqb*?qZ1I^_dbE2aiQaBSx= z>RP95s%@V8VUk+mtfcIZ&OGngq+0HQ8146S(WYb@4(jQvo^lDXh)nM9)m4o`%(@*R zOGhozw2ev%4z;>S6%}oIB4Kgz@MWGBf_ThR3M{V*a%avI;Lfr_l@dTAlRqDLRb_jM zgj@KU{vooFs@DI}8Xag0;Q)v4&3$w&WOH`v@3Zylys4R}vLtu?x7b&u`+I2>h(8JN~UtbibDaDh@rCM7||$*6%Ji^>>(KK6Q~I*wz}B zI{P=nS~?XN_Ho>pu|GsJ%*Chbxz$HE$IvLh%uHLStQn}zy8dolOk*Av!t>xqCJdI_ zpfltKH+Z3@uGPsoK0?T;nw7?^v%F{B(4(kw#}!WpyV{TYX%`{#0j{xN`d{pjs*#OC z^we8&IlGc`zKKfkk~T-w2vE>ZhuGxn^PP;}vEUeAgxoCZ|u z&5IRno|p#IS~d2MEuzMTUXQ6PQ~e>*Lru7NK78x>3gg%eEQ#7$r!5(I_@i|H&|xRl zG*%WNls>-umVv^*szuw{rA|)0@=8TMi%GMYy=op2l9(PlxyLC!$ySDYkqdi%S zG*yT#ZLc8rNDWzm%5)QnX&hUiuQeTR>6jH#@0<) zL4i`APi=pQToMa&6ZzRy8y_Vr@u|l1_;U1HrTIZ%)6oRK+1d>|qwnUvh4o8&KMbkp zF1T7hM5)tklO;B*u#AW(d~lLVmhO*IA(ichfzF?<5J=mbtML1871RZ%Q4CuAD+mxF;kiYQ5 zu$Sy<{Ijg(4aNnj(4X-tO51@ZKIbjUqwf}egg{jkt=F2Y559Y$lk-=iEdiU@;|miS zyS(b7wc?KU0@EF31q~VY+5ACFmBDVTK;6_1^F#w9hl$w@yOaa}55Jr15jDBReVBWY zHT;>;ciOPGzyn_cD{YSn(;un0Ow?c+>{aM2G^Zh>sr#F($uR3e(5Y^3>HI8X^aWpe zh*Wu5yQ89_ep_C9_C@9>F zm}iX7`UDdxoqEu&?j=sD8yMrM?5%mYp1Snn{0&g5z4`5sG>C#&QKuS<9`g^R&v-s% zM$%_8wZt)&IGwg``)EMfJRGQl7QPjcPr~9BxjDHMJU=zRllrDiYLR-fyz389du98) z@WyskYk9A6NdzMQpO2-#J9?eZ{^$1Ei}wF8%l@~1|Gz$Xnk3m7M%PU zJ&OVxkPUt#s1q>N z%#GDkGF=Wy*!|Du#sARmivmpwI1KTE@1W&m-NgIVt$Qd8l#$Jb)mZbTwXfCk{@8C@ z&701dUxJ;@)5WIe1kFZRnIA+6el0NSw)KyQuI!<$sYxq5_zDlT z?Oh9NlAwIH>aRT4#D{p|S1C5cvRPqvRGRT>D0;$CVB8z3*QKaLu(tn42lD^<)a<`r za7rghZ*n5{H94%H;>ogjX|YNcHO}K359{>8%G?PQhM?4`Zp+41;dQ_))VABX>&?K| z)9=z^V?x-kY8=VQDNU|$5IS)zZ)rbjdvfQi`U!2{C#nr{19dN(>M>II51u1EKPa^=GrttwO6sR*8l>P--ZBlNO(W~pEGnu=Q)Pn{kqeK@4n0!+zMzcbac{3^ zC}J=itAiq$xGCq&>{t{7nD%K`` z`JjIP%mUy-acM>!cUYHY7`T~zZwA=@o@g}WiD|ez}NwX<7 zayGVk|7M3VH*<(Bc1p%lZoV5sv?2PPHWXF3dR^g|sS$joo=c?}`(P6Gz*&5SrbZ#WkJRiXHTd1PTF>gTdfafYFjt-QWT zqx1P6B4^(QxA|>>kGNHcD|QG~rA;?+{6jiFQOIyfsy*6CporJprp}@y6;z&>fq<$( zm?RGE*D~s1E7FpMXe0X&;5e)NxAY#vn<-l`%HT2nSqCFc8m=SKlSF;k^femo$J6&A z6kjUek+f8~yOAkR2vXJ2=^%{o^cu8jr@no#+K1E$lGq&q`|T{;8U9Ebb_Jhr-0X?n zXlS$?Ut&y-dOc@f09Eef{8=}l(>g@x!Sgcz?3MD>d~`qnvD{H`ZXR9O??cmQBvXgE{Y*wwcF2H0%PvqepFw{<6d*t7-jPY4~{hf-+hH686NT}vN5AEy^*9z z-Lr5w9lG}D{fis-Zn1d`VC;hHIz2@nm zj3(O+F7&Qw?5WXd$&Y}Jk5m0~qOt=+ZeyvH)e5Z8wDf!j_akeAw;!)TBJ zRq~01=E8|mIs0Td0OmHC}q3AHmqr-jBw^sdDqn$Y_ zEtaiqh@*6@P>r9JU%((eyNqQ6xJbg9fBX1W)cS6_!?IuZmX}JV&L1LvJH;AjlLX5}}SwmcRZj|6V-dJogz@`mTi4NMY*=%{SIV@jklp#4;d@uPS zEGu3@P^Y;XYjLxP;roE3WR0Q4g%crqZ`E**5K#HU1UYQ09G-Bqx!ZYFIn{FRM@w-Kukj7qJVhiCVzIL;Qny7-wW3YQor$nhn*4SfFs4Fz`pDg z+u+-$wP0V@Y)YBga_w}RAUwD4y=uM@2gnR7pLcjrYOxsXA?kn>{m>5H> zWb~i3?ia*N4|Ej2|D{2vP1Sk+CF?4u8D+fj8u>wDQPRM>Wm|9TIVG+mUYMDXP}5u_ z-b@DoxAho@_^PMFF%ky`A*W{IPSs}K_?{<`DJfa*LY)sqy?J|V{ks%Rim4OVg zODYC6nR1I-P832h@9J+t8+n?)&$L*+{oOe*#9TSkUBz!@#aW**4E7CG#^zNl0kkVp zT~JY`=X9;;N>N-zZqsb(M=fWn8kGq-(3?D>oAv2LBdcC`opFyRSyY{^ECBY>#fP*D zQ8YiqtYYT`l+e2NqLU8m|r8TfKnr`3{&G1}q{Y zH4U=gfH1=DT=tFQwo_+dL+57n%*;6Uos+`w(DZe6fWPVYp9-ufG1xm&DsLWEex>Qu zI2zL^_DL=7rufD^@aJ7zf%g{I!+|1^Enh|Ui&)?G`c{Z>PtLCL|%4~`DQ&3p#|y5=HA zZZG`X`I}d`zB8jhQ6o;PFF(yBFeO^o2hT~X}A5g7FbXQyD3WLVtyh< z;5v)F>AEd{--`TgF2IwrWc}+uIJf8{So^+{XEu4S9FQS?iM2;MKUFL07bAPU7u_JM z9@0?En%js*@NRI~h&;TO*drbu)-$IIkWP#&vt8Tv2;(kIPj7K2w+bJ!i!(o%`l@5u zg_qcJbhInld$K&ZQ{A4N37ZCso}E+V#0ih-um13Eo8NDvx1GwgXnDcefWmC@ZRQqP z3)qMWfg|s}C3c(2_N)li5|fUj;N{(_S5T{J3L*{@u6ZM%4={cqQvT8ZItyEfiewI+ zg~OLr;t@r-bN6%vbSBAi#ZubV(DHG6IG(3|UuvnSO5xCW$fa7E<(n3|l7#ccU`bWv zHhY;Qvm~1NOFvSqrOWvRX;~fZfgw%LyH=WR_Y~`GRPTJ3bB63C`<%jZEm`|0wtZA} znpLympw-v+n1C2?m701msa-kyiHF5Yigqheek{hP7v7NEZ8YnHv>hLs#SJyA9L(GN zbe$dVT0=Npx#p*lBrTngBZxlhO-`AWn&_ArFDxPZm_1ZD)Fo%VXDY8179b!*Vq5Go zK6QVcDn;KEy`MRORnI*Yzhd*)R$;GKxuJ|Qb0`$jR~K?$rzE#_aWWpA@L(C}8J@n^ zP~R$&(*MfNPne$!swu`8-I=AXqeMo)JGlo6&pu)Qj1-WW$Z5q}z2`~koPAH~E3iq? z_cmRvo*Ke2*>-FGw&6`4de^w-^7>*FE%yNrkxZN?KN8;7I5EbozbQ=E&fo%FOo_+zxb#lk` zJBtL}@}uH&qn_r!3>+DXi}=oZ)}I^su|2PzoLNp8{8aVE?!H<>BxJp2z9ryB?B>m6 z|LZFQw{X;kfa$y4R9zPXw3&J9MvJD?@@JXu&n78M{cKi}bGA;59kmK(!>Z^S%%|Di zr?)667(Ds&`-B}cSkFed%f`QqscD?BlD(LFdzbS*KD|Zyt(ud!G?1@&-B`L%DxEri zf<+SPK}!2O(g`=JEvtiov-alq2?H7`dUpyQ2>p;KXma(iqiW2 zY#qLAqm+RSoL^jLl|cQ<+Km%r%fGUM@v{YIMz9s!gKtrWHhyFxF%{d}5OFFlPI%R6 z;a!;}iv*id7j4hYyAM6unRH13rEW}R{@4s4B}VS`sP-Uvej=Pji09YCrgDM`Ww%?}e|MqT|u#0%Z>KWnzg^97Q`;EaLKxmDJ`Sou({XO~KCEU*a=3 zA~5-q@4REEny0Ilr!;l+-Ej>MGR;=leGOyvqO$Y^(E-u$e*a#3LSi$)9z)ig7niZ- zo4+oZ1>&v}?0)?8wUyV5Y*E&ZK5u6Lme18)4Jz>2K;CX8&Aj8g`ry`KK^HE4ja4Vo-^NFx5`OsmewXf6 zU2>J$#gk|6y!&mMr$JOT94sBJEu&&E3UX`Y0I_$YZTxd`A|k;227)@*JlRRTUes_2 zCOV`)Xhokg7m+eTk57r&AE8O(Ut=#x8d%t}q9|SQND^&rI!|M1d`+$)O<=Q>1iv-> zw8hg?ovXDS$JSu{$u#6Kxr?crcNHhm6!^;^JTRfbBUG*xnIm_7y0?)jBkJ>hdSJquT$d$ykT zQtKkdf%81{-5S}bXLN3D{ZZ^tZfPs+cDK+>>LRm$9>@Ah{Awm4!zGKdDmtdmz5J%t z+p6xGbWO3banBDElL=n@lu&z&R9)Pa`K~udiMa_&)>qaVlWp3oV44QqZWU5{9CoJX zdk;Qf{ViQf8<)PKMz_p6HKsWq{V5QuE3x1LN-#dJ#|{UR@(r%SJzkHv=l?{qh_uGt z-B-|m8sBOy?U5}9Kwk02>5nfnt2^K|3r;yQdl$`Kh$-DT2b`!DTKNt@Rxuv;=Dbfq z%)_*ImUmJPLwWMf7~>>%DzvlXkuirtNjgE^SzSWLdT?5Vm0tM}Ez* zlse2yU6m;55;LKJL*I@w1K#-C(n-|kj?$6VHPxd*H_t%;vKBr4af6q$X|E#IBhP>L zF?FVSOS435%+U%Zy3zemerIrYo)kS>%HwZ(tzLfuolgkGq!EpYb6>+E1QYcZ+83pK zGx^_Kz0g9r)Va?U3b<+m#MiN#2A3{o{o^@VeLBg`#q{5hGN?f)3It7U8E=EtNGK|_ zL+GgbrJ#R^%&eM2k)&j2?##Gm$9mY7A(`2LiWT=VXWT;{7D`bUNcw>PbJ^Qup$#V@ zCknaS7f#pVrjmfQy>y(F@A16LIWGgYJsq^zb_tns(_%Ov)>wrW-yUPO!~)4orwn{T zxyzi)+MiJm3~?h<;xw_}@I*JTFkc1HU(&16lUuH|7b@!NE{pSOn+H48O`?*gNoHgW zI@7GDkBYg5=3S0f@9%rc4DK)6j~~Lh)GFao$5$s(hz{Gv}^O3kw<%U*+H9 zH|tslK^V-C?K!;1Fif(4LNTUmjmorIY2J}Ki5#gyCb{i?l2kE^qi!8`%4yp-iN1w7 z4CtudR)E})f#&#G)y!1-Y6wdzI!PwY+}+P@PMOgH z7t(jnI%KTNm8p9=m#w*Tb!mO)x)HB7gVhGcVPzOiA7L1kxU(<K+IA|QD__-xfAgH_`P0bIXvR0wsW)W&JU6g z^Z2ipGBR&{%`2=kzXWL1qgRUaVs@&92ly0Y?XOpOD8krNLGKk3O50s2I)%`L-5l2$9e*Y) zVP*g8r~IjZA115N!#?6KB<|nm83+d4zfCt7n;j7jgU$anRR{fy_F zsifc?j|%<23%Z|;qyMQpKnh2_=5Y^8g5wE{qW(~k-M};G0cuXnf+h2Hzwh5yz5m_4 z^Y0DyJAcOy8N^5XM4#tgNc#6|ob&!PR*eXGzH4_`DW<+(>3`D7NJw;E7&$j~OkOuW z-t!Z)$oXG1jlX-0%{Km?F_JTQ@h~XARqQy{5NW3`oE7l*)h$#<+)-$6u%O`l;s?W5 zO1oBYGWB;O)O57YL2=9X$7L7lFgyJ3{AH&XtTN_3CGm1wbdYzR3eKKUmY(9a_Q&g= zg!Zz0@G&DHCfu;yu&0~mzJg++SW<)*ZcX= z&LE*1l{s&AO>M(QRDQPBZU0{7fRCv{0-)$(kv_T2ZTsle&3v*LOvy#$5Hc8hVw*(s~7 zBxRnex~Rj=1|<#py5*_qkI5zY>7t_O%!Qq{VYx_t_xm^|C#UMRP#JiNGq8WR3~)&4ingK^R$ODtQMV2YhX>7Yru1K`8O)QhA#aP+r)36JKQ z{agt#Q&(`8x3Qn*fcF-e|9$zA9_6dRMq{b(5=<>j*_2bW>?q1yz@6D=T3ATJP!qv^ z=CXd6bk%aK%I_yQIWdEWRVCRyR0QOEuj(wZ6T&P1=Ohogb9w$XlojRTMPcAcSd|Ks& zC=xK=h`Q4v+5q+ulWv<+SW8T}MZ6n>edJ6Ojv5rQXwwVq?>gjq)#SMn^n~n=I z1&lLV!zAB{`*+s?u)&Y<2n%vkVQV;r1Aqqe`Z+o)-@2+->aAizAw)GDtw2p@7Sy{#aT*# z!mnqoYO~*Jq+QB4^l|9J%^LQ!Lb+$0I7R7? z^3f(E>J~HG#N{c>%S;$?E=;AHtQmu=Xx>m^SrM!#tRX7zNt9m%nqRkT_ed2GEb z;}n{tLkBpu2peDNx{#m-Sb905cK8J@rzORZ~`#$JjAJSp;7mRaN2gX*#JNd+p-X3jQ^3ubo)->08yTQ)1Os91bI#LJUY)2DFemE{EncYbWYz_0feNWEN6X71 zXY)&D*ttY$0b8YK&LO3ztuXE!I~WrBf0?u*?7kOed4zvZPxh#B*}Kf7kc&$u;qd2Z zPk)5@W-oC@AJLk_qtB|cK=FTQWJx=wwbE0YDcQF>g+!P$T@@reMwvTb)XiRg*}yi` zEPHf0Pu3@zj;V0&w}tV@slcH(;KQ8pge~)-S-cjRkCQ)h&&GI)=`9MErFQT0eBX$x zpNM}<9|+FZZnZl^_(Ds*QZ`4DN~>z-zl$FxuJS|(HZ^{o$x{|_L|*i(s_#X^Wjh&V$!U&Y__>?6Nh|Ko+TnO%x(u|=lN(C z^TS29FJs6f`)!C{>2gugr{6<-ogA^Tf?$l+cOt2H?NozVuJ7h50a<)&HNEFz-)gg@ z&A1daonaWN*(Oq9ajLm%Pj^T^9|E~!b{C6gd0x#3o%@$p-H=fCfjK?Y^?gs_bc;xN zIFnJn0@3Q|B>U)!eQv_Gr$4qo@bsv-Us`5eWMy_O&+gOXuXJ5|m9)E2cMVzU$$;rk z#&uYl(?r-}hG-Pjp(}{gi@Nyu^?Pc*obfp9yHY3U7SKFv#n`0#Qx=ct#?W4Z;rrdZf6LEwew}Hmvy@pSr<0N{@Ym)76OI06re6BMpTb3HKA8xvNF0ULY`{XutqZ5M zBRtTftPBR$AGWp2SZ@dt;MbN&u8D}!|E1pH>)E(`Fq>U)To$o7;37%A>A0~ft;wl* zofP3JVO`xM4O-@a9CZ3MT2w&p)+&lo($tWugPWF)pZM8xY@Tw)rzuybQ?%)YKRv2I z8%xlSVyy>*N?;Z3OTOwD)Cd^4i6-7;W$I@=fLtqr|IrgeI?VG zfmnV}0rjNiW0)mxmd>fr14E$)BabgqZZbXa@X_0EY|Tme)@$Cm#rosD>*YrR_;{`5 z@mvx2mCn!L5SxbC6aODLsdLDZVA{H$x0+vl!?@0?(Z{bV3*f+>9d*0UV_#+4>{IoQ zNW}(!XEUKE>ReZ@1d?sSZ`Z$guTsokQZ7Edz0}L~)YWzRmOm>9WNsd0jv&y%(+3-( z?ELIH8n$;dPT1v`E9v-lLLUm(&nzds>MIc@W_A~a|Mu9IsLt`?>L^4|TuzNI?Dp=R zuiugQL>}*>ab#%l8uQ5NgC`BE7=L(*Z#0_2`a+xR^{4=SmxTX#iswFc6K1pW0a)7* zjkSTQHGaX2ta&_a<%yo8A^)qnIP92uF^*ZtM%0Q3**{Nz@aA zUI42%qF1i^9jlF4?72U&19-g5i3$cp>zJ)6TUw9y(JQHJN;tRc%3 z+ssRO!6iDWgM8jcF74p2fKX`eVU$#FSd%{cE};1)75aN(G6w0-RB&GE)&7O!NW<*h zw25yVXVbSjalt3pyZ}D{t(-|)WxPL4kp!fP!;3Sn^_wEAu~J`ahN?~KtDfxU%xzU8 zV#S8j&|%&{J>C8ptJuZQ^#rCJhua4Im`vBUUr62Ek@qc>T*FmHSF&ZsaS?{rz<3lU zx5k|5uJ8y)bk@RMn@$hymrF9=Ng`r@Wic#uDIaLx-AlgqBkbFji(unghJaJxW;8F{ zlJ*Ew>T$<_XuV5=xw`*3b5~6f;QHb)nK`rB&nTRA8dc}bc8j{1yuH#nY`MnnBv7lcSd2W%gvD+33$)o44ju zvn|Qz%Zoq@brQT%Gqo4}cGS#PBh}HPng*Lu%R)lkNVl&cmqrI$%u@kH$-i8<`i%%? zEfmAu$}qbw){TI8#&u=0fq@AZlvQ(8vi2xWu6QhyuUm8}75CYyA&5I}4hT%TP!^1A zksP7iT}URL2`g}@=VegD&RZc=S=}hE8Z*ICMuiDdb}xWTe6e0$;554up(CqA#P8}# z%=S(ER@-{8+qF3zHS?({)3KhYvOh%0EE#fCSw3NP+gJg{)X8y`D%tidNt<8uE;{qh z$xNIz&D^HE+=bv-fWZA{bzktY6F-KT4j*7mUY`6iQMIV9q#^nS0Hcz}cfQTLv@BNz zO$c(y;{i8)a)UnB_>-9lVV+Fr_p`^F@^B_W<=<>#*? z#wvdoGb!j)oCVqM;{{zHJ`+uYyoo4&!^zf6Vyu+K=XWMVDbi2GwMC5A$&WCAme`BS z4yQVp5z5J_NZK`Y2vGdmlK+`Tqg0Hre^fqj!Jt4fmjtI2-we5v~g-=I7 zHB%q^4}I>vUJ&Mdho`QAgW7&d9DIXSYvCF3f&AhhB2~HJ$upAEE3=u! zMMJwkM1tl%Z>quG5WD*8PjfMM?Zd~E8NHN`MlPz7bZfggJpHATLNnm40hbM<1RgZ7 z`t(@0@y@J(UWIYGa{nwVnyFfy#bpDJ{#@HH^!>#S&h*C^sku3L%|d4(6j@ z=F$F#68)do?*E_r`S&aIU*>*zmMmmCh0K@+ac~Mv*W3!k8$t0iMh9+|dL_lW5hway zWP;jLSF;A95LFia24}MgL)waQF`!Hyhlu2R2@Sy42FKc zHm7DGTBjFljC-&+PBm5mxdkm}s~#JmQL^cA*r)Mte!KgIAjY zmgeql!%o`M%N*cps~31oW~0eG{3j>^lXh%pRI)xJ+I9ID`G-jIW9s|H{9>}1 zSJDFd+c%W%7)riA?Jy9$Wc_~I|GD|yudeO>3LoTx4$U0mu1NvI)k#J~%F6~|RL;vZ z3W}m^SoswbL^di|>-U&Awk%y~Cg+`&`npxHz&JNk1Q$HuauV*Pl=?v_XJ+`a?i1TcDYfuIT!`$&4pk z#ix@+e6eXe*TQ_VNJS{;`WQHRzd&b(+%{1}FXO5;%Jo}V51l)`lA0IOetpuY4CzeJ zQ{E`srjTXO)T1k++7`c7IK)JuRnUb_^@I4!68w;$tdXGlQB28`^Z{7`Q}Q$hlO}0N zC<%<|ylBHR*5SWrBf+ih+&=5*r()z<>O8tn1b8RFlep}T z&>AMqC4#xDB@f@J$rSB%tOZecX$4A_m4R(ad-!4!z3TN`;J?B)OOMV2QJ=6=W)SErN2{cDk#g>kQ z^Io2kF+3=D+)Z`M)?Xw!=4rR`a(1^-5*X_M&W@{+CiLAP|4d2>8oMUF~0(P2y@_9io6P3jLI570*9>Iu43+&fX)&(T`>m|1NYC9{=ACsLB1$;31 zE6&Xd*LQ`-277BO`iDLQX&-xUo!9uu?sx?0^6Kju=E-)%HS(Mzye?;Csql9L;qq8? z6~6D+ackeHYN3v%dBpKeIZQSlhdQ?Y`uX9o50JfD5F-G!f#s!ri8 z(ZOyZU`D6$OOca1dv7z8+&>jFQmb)=q4_*6pO=E)HY|CU-ktOq+)+p0>WmTC-&PT6 zJ1ibb`a|@Cs>{sv57D@UUuPKsw}m&99vt+!D(=}0++I5`xBMwb<>?n=lz8opc zL{!8_Z+`^^OHMm z`~$DE1xMd}e~t4q5$E=|hc~l$+-lt>DQx_Tqok991DdQSN%AchIYYSbi~oM%%sgbz z>3n(KM_gG`a#&Wi@T5!8EcfqPXf^bDtLiLxhcO$f)es0dSJ`~HQaHclQDODIN>@DN zyr+2iYtH!lQ!)1!ithQ?eaJ$Q^ zsarxodUE`69Wy?--InH#k@iUJql(peL__q~z{dR}*2eUf)ACQmCo)x9MH4Y!A3n9W z2}}SwKmVP5ciW!m_*i4P5sv3u^lA<+J_v00^M8UZU)QkPy8qRX9>LE3l)mDBQDxa5 zEeW3o_H0F)xg@3fOU;%^TK*sGy$4iNUAylKF9<3E0@6uPib$7ULJ{fGL<~spH4sYZ zO$9}2Xws_$2p#DirPqKEIsv5D(0lPcdB0sg-+lJj_uMhc_=&7y6j@T#5+R!ad%THz|MLnyWc zgBCHB!O~FSGzkr7DczNx${Laqmta)0(ylJfZ!Ajgn5^s2){@h>^|~eZpuJn=mjzB! z2_KY+gl(6bQ}|40Yz{V#&_&)3{o4EAna!mQ2noS)pn4ju>sXKFRgRUsW=gB$Xa+?$9WwM$sxPLXdUqfBHc~u^X)G$ZbDIxO%=2jvb3EFvN6*)S zvFM*EekkwoAJ<-?0c@@IA4#|MU69uP%2#YX=&Wngn|* z9vEc?txQ#5eQQvVCLI+Yy4jBpNFB9ou7vAj)knsfeDXG%W?QmxNqu((mwn?RUVB`9 z3S{OJcAGTVoxY_c?~MQ@BlC039>JkM#p$|Uy6!<#XVKIJt|RuQm^FD+buCkgHg;2GO(wZq3$c;;V}?<%6qy%V#$qF80n=rzqd154&_!|}wT#`J zM=!G@dIGa9>#S0RvA7PM1fh{E>F71 zqPQe2Z1x0iY341S?UWOIUEayAHsq*~{4!i{&m7B!_#9nvqyhRQzPHoIh^;wMEs>J2 zGx=apBO?h4%vuyn6l@HcqsIL|4v5J6bUNmKfLcGKG#L3I9A72(P;})Lk=WvkMfgQP zZq=OGU`3I`IuY8KUo=En`5}kdu3cX2V$<;&51vo&-MBI7mtDeWjos8z|ANF~<{E9$ zMV>KI$K6C+h-jlswiM7zZo%Td=h!Q##-hk#eit=<)s4t13_Sa@eoW51M%2r2IZ?D( z@XK&)BxD9qH8TlH_+GuEG@v^Q=MuKnuU4Uw$GmM& z5ai{-VfIs$kQ=AY)L(ir!D@}-6+Ur!xnTFO9<8iTZVh5dc#owNg7st5#TbvDNF>nP zHQ%>a{-C9Iyq0!DIbPt&<=73Um8w^J1Du~j;dlPA$zI|!m%THeh9^-n&a^FLXuTi5 zA$_V;Q!($F){-|$r@7KYYB)pi$!9$U0bTnv?xf|fT=c(}9`2+I`KBEs4_UenZtH%oGNEtLxYW6zusHv~{X&m5 zZpH0C=pg-_K~ICzg_ZhCBi!TWS(`wqX8Rr;k-7Y`ryrJklWU1=)r)f%rZwMEhL4i5 z6=oKU6Mr+7wia$XNk$@)v&_gR3dn8e!%0{qK`aL%U3TBDGAyV_o~bg+-(RblknTj@ zo6@87P8Us^Q%H0S8v7HEuEOed>>k)L%f*Y4CaD{T`ZyvzC8VhrY5PlrgF;AsPhM3K zxQx+q$Rd;A6-{)FGW$GhlL-p=^pdxFb7Hp;9?Z^|4urirWLnXKZmp>`0)>G&I6<>0igfYc(dA z(z&&nA8>S1`0T!4dwSU~av)_n^Uam?cjygjGrl3O?#KIZ*EVPQ$c1cI+ znDX721E0BuhQS)F%_09vI^fxnTl;)A^C~DIvnfcuOCaU3Me<D1qrpMR{WfO zX=1SzSwV4efwz@Q_sBRdx%|*8{wv@$q9ao}a4E@@%e!@O!;gud;UG;W{gt>|c=9yQ zNNcUiT5r3_z+oSYsD&9o$eu9Op)5(phF z&6!$Mpx-l}sZvJR^jKCci~92T0c&*(OA|NfHB?nK=-^LS%%)2q%Fpls{dpcI@f~sh z*v8K*C>H-C1QMUZQcBhI@QS+Z$2MtuPIyp`ZEe1TZKCQ-UBXCRx(D97Lp*68&6_sk z=}WHKko*i0Aqo-C;Y6^y&KY!eQC2U( zNyLJ2%l9D-rTT6bXbVK5k9G(BErI-?!g0GxMGGD@ zthk6nJnQPLF^z&q@{~z)&tCIZ0n!PWM!A?uO&|T-tJj|?LQ&vxL83EU@fD~Wy zn3Y&E=Una1JD^YQpLoS|htX+ev!vZCJYu{{o+k#@`5mQ>bzQB4MTIk}q1%)3#SDIp zKUV*&?zZYHnO83E$LS$B-|}96lk1D|LRFT>3tNe zX($){YJ35*`(Rw4f2;QO&;?y@htbcUccz=f--+TvTet#V&CK$(#0T=|y#@*k!!x?to5_x z(%J}!L~iVyDfe(*xae7{GBC<+@7nM)AXDEWhyx`Yh0_@^I;-Eo@!Z(rF%Jd`0`HRo zdjyrtd~Katwi3bID<5ljOwv(|R?uZzP5(HFceh5u@EGIQh&^BM)$Z>25|Z0IrmPt8%s`HeDO+TOSU9-C zS#Gj^huS9Gu0q{)DV0ZOChDN@}YWY!gUp}wqnC<&R1Yf6>}>gd68GacQMKwh2!&7LiERb+>mA)$OD4JKF<}r+LZn3 znhJqVstR(O-HnM$^IN(_$VgXZa8cnhlP(MAdWZ>MDZ`wxDN>?V`Y~z+$(|)|Cg;@TH@8b~Tk=nd-Bv#J|{6t|@$KW*sHe7n(Yr`86|6E|U3`m3fP? z9gNC)R5+EtdCl)0TzutYD9Ca?RzG^9W^@s0Afd?fIf*H6B+-aJ7nE?IL)wwt-Z6)U zHt%9iRcAxjJeP3SV7dHB-aYW<_%mczKhVHd_}epqaC1X2(`@W?uTN^XxVWSKpcQkk zelA1PBJuc?DHwSv5{BbhA*-FFm5hal%grz%Wdcrv?Gg>O0TMvDJw{^3Mu85Ks10^J zB)UW9Tj35@G_$1R(%)3ybYInm5#`P(^R>nQc<3Q-9i4}V_$m$ zcY6-F8fb15nHv)S+I&WcW_T-B(1Z^}oJ4nNwpW9=su!^HJuhw0rwym=+Vmdfq5c~usEA1go7Vc{r0dDYdoPw$p0 zhE*`5c{Dtw}> zujb2Kti!EozZA>}_!o_$o(Fpg9$CN^Lkfs?STczuN_b$wKItP(?;f=+=bU(ZE+K`2 z`E1FJ^bDq>9MqUtt1%h3!#}Y_H4W5Q8A znm0(t^{AnTM}5t@3o(jt9TkI#(W$~Kj`|}XS!-AK*|R?wev+58Bo6%oVp}}98WaqW ztqq;m2%)1;eT1@StLvxH!4Bz;rzA#oCFsX>(;G{8N#p7a#;sRGb!e#!cw2US#S~|i zwm%DlCA`rcE?onHa{;%sx$8u&_Z4w-qBPr{~29QOeW+kpt}`lt>c*xN1V!N=x>sNA}BUy zeINThqp|wwj`UoQ^9}Px?e~+~{Nl1Q*_`Nhie2m+jh>0LkywFtzIT$5n)FrMf8$9rT58pf6H5W55`6me7HL zg`b@KGd@43K?3i zHaP^p;YMe7l>G_eH^bTLq2 zoqL&25i{@4Jkvn)X`RR*iUL*kYWR~CW!#y5k=0ZyJUgn_&W8YoE=Y21F11abVX$w} zypdYoS8C9vaQQbsookZ6C1bBdV6^4LK+OQ9LS2)1>@-XsOgNdq2Iy4LEKP7S?j_5s=znPW)P)y*jE7YE4>6t8{1?S zmhb=KSLEpkjSA=#_d*vnPqN2%b6d@)4m*SfYrBfvb=(YGER zni3sg&C&#yF51xX_@&{-q8WaL92Eg8Zq*gPlmJHN>^#rRH^a&PAsGv*yyS`wz_}vp$`{8DX zKncm|-yYT9-N(U!zs;K!{+c}hePcuxVCAV1wBo%?wA(lXd7}K>cYq`XBYAU{RaeN{$zPRPvItb~TynceYI9mW&3sgGP6)U1dIEW}I&~JTc~%X~@UNe~`DJ}P;$L2? zf)ZZxeX3=xWsbVX#}9kAL;vQ@lJP=CbYPPQas3&85eZKEx^vbQW{8~7?q99HR3Bb^ z%?Ckrmxuw3NC{JVGcKL~jR%S;$6m7!%Nm7 z^&iOJSgW@35!C?lf0ks3f71uhdfEHI88S0^I7zfa;v+Yke?uI&{bGz)rp5t~kvRLI z9GQ9t^ujk$SYo89J}TOqwb?It!WgDe{e1GhF~Gm5AuR)Dps#sEZZ##hM)nW}=(8ul zY;Tu?bH{dkJ*7R%b*_JjFZRfy1*BsE70K8|K48w!k77F=lvluOABq(4jLV(X^6}$easknw<26)60Z^nTqj!k6mq)#(iIOwAHqLWQ@(tk>jvK{T|+js;CMF!BhY0R&vVJG$;Ifl z(;%gsaD(J=wC=KJ zjOWIE{RbxEc7>=;1+J#Yo=bo$8MHZS;G1#Xg46ZD(3j}Dnu-D4-q7#-o+LHkTmJL` zjY?XCAIsL9ZW)IBs$a7M0otZLZshj;r7y+&CL9s^RRbXv+Ed7HD0dH3PO`2te#-Gk zRg82j<>+_$Hs|Mf1hK?F+)c&mt$rA#!ArS6>C|V8m$Yv>BV8+|d1+?4U$sr4MM?u+ zFUN%0xTnw7!!7iiBI-z;y?#DN@{bNZJc;-SDYJ(4R_v(AyHv_7a>l)|OJBR-1?|k+ zXi>ln2z;iD2z=m+9xNB%pq-WEx4ozgGVF$`if<5V?%j18itL%=uO1x~`suSm;8+-7 z$UZ-I*M$#%q#~CLQE$Ue|ErX$>z+obxQD(vUMHJP_ES6e+!; z%1L*t#*<2d{qf9|ys$SkNP0hx-nB&eg@?sN_YGZ#2*b3t`Z~yI$~-zz-B?>%+-V?1O^5rPPDmMu`te9miE<+N8IbhWyf)CEzX-z1Y6>!(aw2 z`6^`>W}VLgh0dOj7WqcggK{{Ol~c@4&X3q4-vP8WFH?hu@Yh_Xf7BJsx}h6ZrCLhE z>S~$@v?n*Yj`9Oi5#6$P)&XI>#zkXmiKHD#v=W)P5b=&GuSsKp+rSOBFR|~&4UJnn z+l{Mg?HTFPef&;WL3_tucZUR|6?^O}o4L+zO^oZ+!*d=kjsYT!Ch^w9eP({%K1rnS zOd>ij`>Jf5WWgIgkkU&qnAcTZvkSCO#b0%0K8#|-1t(7?78(@ zNZUMz=AQ9Md%F;6Nq z18U(=ERVXq?)fBEGHJbbhhE*vdUbqS-i;L;eq;r9g%Kw+?S3gEx8vnw`jmq8Qih4O z6@eycX5NOar;BXeif60SZp~bP>lxYQC8XWuN_FrWxQAjb_A%<-tMl`+-%xpFf*&*Q z#!skma#om|GO-N~XiQZlTOB*lb7J&5NnLp8+xE^U$!zRy^c~v!QvphmCe?=2=z#!i z(5HvJhTh>yk{LZaQDKpp$|2HCHEpFaF={?(4TeC!4r?gy_mhPX?2|7ZOUtD1evAqn z_7D^oEj&%MC&_iOlvr_(o@z30ojtxSl}YYT)An&cD;Q;0Cr1kY6*cJ>CI5ynL1=&# z_daH9N=T1nJQK<0iT^-iO~l({ODT>DNtEQa%+S*1%&~KHiXA<=c<4^xlRHHg?4j<` z@^NLxqhtP7@S5(zm$N3`RE8H@CNmO#oQADfob_P&jZu|^^G5*H*p5(S0A$=KiT*&! zkS{!=*5OY)05ZNiLQSHzyYF7)F%n(V(ksbvJFqPC@y!J>HnU8Gc+~*hWlAokXVbX+ zCDlo;puYP{JKEUUV~9)DK93zfJ%^b2xzqs`a%W`Lx5v?P;bWi3l`0nlhR+ZDQc`Ds3>^U6%Y#r93KdPtGV6v zjXir0T%_A&5#ku0I3>W)o=dpi?wt*Zp$_xb4(pZ61aB4D+s2~jw1482g8d_;{MOfo zffpCK%!PU%g7-h7o!`H`9GA&6p(Jmo)o8u-C*C&Ll*M%~E2XD3(4Ke;y!i0?k^AgV z(_b}Ozt_;~O~?Hb?z~jFzcr!rdkyd*2d=5VPK*isy@l6*s{-~9!?k7mzxAS|E=SIb zQLC)r^YKt+ga84-7b*9;E!)U7L z8E@=6n8Ins%<0}b;oCPDpGo0xH81WeBcnR;#DOO4mf3Xh@(~3pHMO1PBXJgs9z@3XcKb< zMkd;O0o5z_R+M+)hsq_QN5zsT;}+8J8d@J6=KAyEP51F_ejSSi2`2_BWO;|c+Z+KSE3xy- z2BTU_+Q4+nX@16;W>mnKo$N2trIT?Av#FD3^V}sB(j(qj1qBZ#6fD$h0UzgGy}lWU zYT8vSq&FdHC!#gjvacc1ap~Lo;z~K9|1d^kj}Tw3k31u`DVj2B@>B zpKH9!Xk3)>xw?A4dqN=6Zpz(`05eq(7<~X3By`SpC z>oh;Jt!WwgIsk{YiFW2UH|gHlq?_xbX#PYKJf2r>v%9h;nG;=;A6FLw=XNQ3bkN;Nu*dO^%Y&sTZ%kL2ud80vK|FG#doW9rBb+3cI9YJpAyba(9xb~4frtx2v~*PeBSE%y|k^?I-u6tKc}66*!^PjHnlfUOrfNU zenw`C#`dD*)3W=EqN2io*r~6)m`yu2^wwVu-|T|Jf7g~E(f(bRq3rl~Hs(v4K=Njjhw^632wRcvJlSj&Njz5(VfeXe-tjaIkVy-rXSd8P zNkPCW7-^mY8hmN$-KDRhT12C>oBRyBd7wQ3IuC9*qDMp|4Qo7QK9*5EM(tzxvbqni z%SNm}z-?MvYsCq^(MmA>de~}UEFQAt4Cd0PWtwF#^ZyX5YW3l}|Iln=N-2jK>T(aW zybij0({r0id0kMnW{TaK5JvN9Y`%#8#oFH2xxtvz7Gje~Y2xy)GC^63a~Thuu>npr z*Q_T+_SfuUU%F&{UO%5eiDMV9DB~P(`7VobuiMo~cpq2~t})+Cyy_NzThhK*=ebQV z=+BnY0{QUfF@ar;^0x%uetT{X!h+FM#kyz6Oo=w*;OR-9ihCsn-wabNfUOF#KH-!{GH6*t(GOxSsuQy%Ie@1 zI{Val*RRq{WLK14#t71%&Y|j~y5mMWpOcTNZequ2Q@`TqCeoIXGMbiyz7mLnhcS9+ zKgGmhvmB?&4tqrH$k!y%%s3)>MpaN8!w)=6xrd_Pd9+&>K(}vn#3qa9hJ`aaw?c9n zPO}-RlB^XRq3QHo;;5v3?`;M$W#m;w_3ITVx?gF}XV-;Ix+xg_`J>{`8QHu`hq--6 zni0F?Pr_pznxyinnyY0gv%QPEw2o2(^(+Tz%DEsNhyC$|qJrHa)>XRboEon(qtjdk z#crj)5jMc{NxwUu?hUt{ZGq6H-sAqB9`c;)zn32J6&5j=e%O9Y<%Y(}Rd&IuFw3iP zV($K0z{EEh^L-4yH62X{P+Ew>eW;lKL^<(Td8deA+)1J2lXZOSUhLOK2aK;k?f$re zCiY_q8LI`3AM=PXdDhr|2x(?e7x`+<02V*8z)Kyq2KOdOT|0SLbI?rOjh#{Eo*~y< z#cci8Y51?!ynbHce1DPal2j>Hk|J>uH`Q^Ll!>!zF(Pec0n9=Mcx$t9VgeuYu)K!@ zpJa8aHd;VqE?L?66e>a{{*NW~*zz|&Ztj-N6gI8bj*)oySJdPl9oBb#KV)1Lh?P2$ zB7)K;A7qv54s&q)yWWDj9NjWEh zBz+fQ7R)jg%@6!zW_6!bd9YNPSbH~o@j>*-k%R3|-ZE3XG5`L6-%id9E;v(k30JZE>st7hOQLv)Ik+?Zd^f6)LkdrNx6h$Z&d?{&)4bY$_J+|G#* zYdSwXfE#5LDu3erc2&qpRAJV;+6I3D?IX?&$!K@I+qrLlue7~3HvHYts1?89;`1>; zxsm(BE7{-c{C+pSWQaNHc24Hs>->H<|DWsuy){h<5pyiXkA3!1H_bDV630{DP)oKL zDdZ{fXTMyhZR~s%uH(G+sYf};OjWW1T#J z$>#go6I%B}%CIl}d@pNv?@+4mHs@9Yl@6<1Zrd5;Y}+3v9$#BVo&~XRKMM_&C*G)tb(Jx2mt30m$pF;F_lK$5x|7t2o0>w;S!gI; z?Dii&mt;#WCJSc(%vFeK&y(Z1!Erbs-SV?{k8@YYs1qbL%E{NDpi{~Fbbs&2;Ynz7 zRsHW_*kodlfAJXyEX(d-zD5%<7wl1=ouHR1OBepr!`a0Y6ol{p=2KQ-@(!pxx47Om z_$Ba1`48OputnNbZl*@^)Zv#~b~~vEh~Jjc+|tJuD?ZPkCxDP;4A}-aGXL9cIKED% z3nH-(3fI$Hx`C^zZ-kLWcbTGux`&+e-lKs{*xH{|m6OMMFYRj#RrYU`^D;RDlO4xu z(4JNl0C@zUIzaM|K7uLb z7@P?inZq9FK4Z6gR8G-9DV9tuPEflH+s+Pc=4s7KXFMzm{u8foJiL42ZS|?gg$V4t zBqDym{ZBlC;nJ6Hs!ATW#m?H>I4L~vf;fuAC~_OD)nMVe4W%xS^dHYK#1!k?DJ6*9 z`cW>THI2`LdvZ^|faBLM9OX&OP}1exarPVU;H=k3`&CkW`Moj-rS)bn9h31KW85vIXYR1^@Tf+B6l zMk%@=3al!W&SX-0Qk8a$7_g~C*gffvJGi)_j|cC|FSXzAcjdvWHsL9zjIpNBmj;%# zBP}<%P0#&3QwAvGhU{?LVmu;Zl=vAYngOw5U(i>l@c~wtr%u^-RJBn^t z<5`E)0t_Y-9YK`0BHuN`hHvpug25V0Pun}#;#7W4RAfVqR5$PdUM7mku7HnQGGFY$ zXbLprIBDau>lLYKRNRP;!ka~2kO}?@?92`m6}mDMYw187$UgoU3DFRCZnOVn@h?+?#YQ^Qw%CekE4gDmGVpv}#BV zLwqvL(%eQzDnL>-b5{hl+mlYa!H`-Fp#t<<$sX~dOjn=){o*n`e4Z(hZ_}Z!JM(Ea z1%>xVT%4yj&QvV0&o3=4z#+;r#s0$N3H*l1+to%AkTdj@_|A4^hg2kDiuQog(T(2v z%n&)1Zn5fJGEBv1gwwlQ<+nz~Dd*8W(5jX5H3^HwE7jb*ENu^{*EA=qdvjS%T`!vH zMDhC`1$$eG&q*H4OTe*?mu|EP7=}X;;Bsx-nf-jduo^e32oXXm5huDjj(CQ zy+`>PlDA~C>{mIWZBx2F0p8W6ls6h#Gz*#sSS zz%b>r&${889nGbU(q9jK!j9+W=9U9lN1iT{Ph$suat)`wnMbxnZTXFJaYBAOs-@8J zLDsg8|6Q?+li21S?(@1Jul%=z(o|&kZ!$5hf0SHQFCd#2kS(ur5?g*dc&siif9mIU zez$539hi9(n0fLd+~D_vzqO`u>4&=fKbP>2UKqP^0`PXj{Q?|$Q#129P3ug!cstPvG4FI(0O=#9vRKh8bFoF(q{2aN1~oW1#H|JRI&c)_9fJy_bP zdHKFfpfLqjf}?7@A$6aFME#*Gg3mlrpm)C2{PH6$Rhon2P)zZKhf5aO=FO?Np`UH{ z5A@nXofh4}Ui1Paw05>=_lyBzO!(L!wZZV7I^MRSeOua|^nWITAO&uubQcRWgI0o0vWnH@CV zbyBf3^4yP27_SVUEUmR;^NWx#d--}6v4Hg3LPTYI>~TQ<#Cuab$2IGDGRdleEP5R7 zJ=nvUH7ZN38MV_lsx29D5WclYF~__%AL}a$!N#*@!?&YNoNAYFf(%U7! zJH%Id&CL;Gp}6#LyN>|oC^i8SaaVEVbiK6bz=@F($3u?Ls8@aCEqDa8VWzQy?J zQ3IyPmW}pxzsb}bYs*4~)7o)Sv94qHlaFZv;SUuQxwI*?jJPb5sUuj&4I;Vqcj+;c z_hQkQ!XiX$&akZTH?v#6GCGg`IQYsU>dxpfVM}%YufH$a7CzAoM*KhZE)M*Y^h#rm z3a#C#DPEz+CT?5VKN|GgT=rx5DMv_o`(bc}foPV4?yaI){LeVi2Ip@xS2_emPgd6` z`WYta=FzJHi)Hq!F2uG3buVMVLgHa8MK-RKJH0rtGEY|coYbe+^nb)x*Nb?4=hhC-Tf$ZTD2!A1^Y1Y`ha?6m#@5c{==V=~`At*b$ zk1h1ei4DSZij0JQ(tETc>dHI{YcKomecX%l)oV;Sl!_q-4N9&5`liv{xl^RDZzJPN z`e5McOj1L67i^%kFhW~LjHUmth|p~cSNb62>3GjD?V_ITN_ zz7A+7RU|wj&3;yFs%x~MI_Mc*%@EuUFwj7#BL=JB6*Y*eSB==1q?FRMi4R@#8F*MJ zFJPP4Jt~Q{ALBi3) zGN#=nVyxigax3rPSx?KmpxbK%u4C>7ims8vL}>@OO@2i7rf2geQFYI&o2SFPlj|cQ zF_c?YFZ zAoEgDErF<}Zy49e@-O{Jby3fuX~`{j-+PzU-KVxP)dv^L^xdo-X@+BH#Wy$?+{(yb zYOtmLS6|X4ulm=oILE_(FHIx`BqjwUG$KICbI%9=#1o0RhKA{f3svJH%Z88i$-6fa zz~EQ^h^6`+q+3kQ;d*i{^D)o^$19y*p~?AwD0cjBLW2J?yzv|4uR;;t;gzka#Ib{n zY^C?CEInI0w6YrMDm^L;~3QRj* zab3HXf2;2@E@kAhtojgc46dnDPM6;c#%^N^N z3hrUPcYNKF7$B`BdUdMnJ2G&7k;A-ml4Mx6AF{#DA#1LjFmdQqXATX8?bUhNbNjW- zH6;uL(9G%uWbh702{FSN6(g!{1d-Y*;8sc}!RWVNrpUBplfGgzv}mx~lZd&=Cghc# zLA|#+0kk}+^n>_KRHRw2Kk5{-S9nBo2v8?9%HqZ4*UFf$) z=8mLhXjWy0I|TV5O~)FBO2X^rGzfTDE8%zj$Gs6ZwJ(xUO_2F12$gd3;9uVt9WNiaE^*_uslDe?5Hsv5 zr@SCQ3Drn$Z9cy0=dyd~I-TpjV`&c%la^(E3*KS?a(VDQyx^>neUzVOPmoKEZmV4h zx-<9A8C91yp|^Z)Sy)9s;ZQolOn>cVcuA^_1>Z+D1L*lA;G2PkS}~^B+TLG9ljVGs zMdF4Ncb`f&!*8Nbxfo75%ib^FWY=#Ei5io10Q()f$Lc{7tDlmOkB&FjO$CKJo_W9w zIm?p#iJ5364Z%YYaC?!%#-sZa-4m@U88giiLw_hi4Q|hMl>1JW0?AOW<kM(2bI<sBVsD;3R7M>K)K(Y%(=c3p|+C9B1v z*QaKWFNrtoJ*x!H=Qk2%(nND7xQK>dCN0~~t1Kt(xuuMGpTHL&?|YKF6xDm_w94f1 z?g02V);_^M*>nzDjW=brH(X}M+C*D?>gSRsS%SQFmk;!CY@Wq0GOR;W@@j9{IW~lrVn*PEzc2%lW+88BZ@wYMYz6q~zFjve3_g+V zoGUg4r5d^$M&C}!Dp}r`DD~)DR99eiG;J#nd8NwK07uO2n&FvJx5i06HQt6v^{eax zzW?IAbfk+WmI5siNo1pEAbIixa;baV+Y+aMHL-Y_l@riYugh8d>YO9Vp+u)rPm9z1 z5-lsu9sk14N5$Hntsc^hiXlDGqv4FCsUfrKpf3od6%Ro5xCGBD?kzp{yn@l)BAhs2 z;oz6w;IY3iB?~SV_B-i0rW)FcVuSNno8;p(Jc$!I zS>bYD_kjBGH!c1h6|NN)mqH!bt-R8;fc&C3Towm(QvoWo7th`J_VD;kU2y)@v`Lk^ z_3oc|k)xw}-4cFHVl8l-HG4eaekKe26YpikuWvupJ|Crt{E3I6I@jYK+1|8mfBQE4 zr-I_)3B^BGUH`U63y7WHtSF`qxU7KtzkVuX(S6qZegrYcVg9YLHYdDn{DC%o$|9*l z(UW|K;?L5Jsgf@yL?!#**g}A85Nk6RNDnOJrqg$O5UHj|rH6x^^LVVGlQv^%WTi;jV|yf+F1*142ITVP{eqm_ z(+FD~J`9Yda7+5|TkQ0ILjdmy^#3XYL3@~RQq1mg-a3YQ^>CQ*bRbVx?V}o490u8` zqQNp*VVh|{TDMWz!;gddB=tiuo4`Px=S0(>IcvoVHqOZtGQl`t$A#a?Ea?4R93(=h0| z=PX~9dRk}vk1%q%pT%ErYfMvmBW*hLSA7U_=Tqv-{Jea`$LizH2Xa&a+^l90DifmbcD)v2u3M@v%}JcJtNA|TASr1> zqGV~$EUG8Bd9M`^rBj%@pN*GQmB5yNdPeFIQ0-)?g}_v=TZ z@Fx`qh(akz9ED;SevhRwWl6I=Nt?$Vo;d>J=*OvbhNb6~9=AVE+N<6F>LCKZRoLiL zq#KQB^hnh|c3nN`JwHTihq^F!x^8C~gCze_!cG#RU;cF1GTSh_yqHUaM6ibVLvD>n8LEXX7%a5M4pt+p^ zFm!%!IG{s#MN@g(7DQ8jU(5>b0%4FhxPvh)ZX>-#Dh*b2fACUSN3U<0O7JN&|C8zF zU4Ze|4Y6I4hyfu-TvCRrKdLef9J0V@wEh|cVMRvUL=APVKm*#wb!KN@%}-5?7uPuO zDs=i*zyqqpLk9;>7fWYj-AXqiC2FD$xI2H{>hR>@=7$AP_VdNI^7sMr*iXE;az(1**jYrY zRT#Q^8pu|sE4*}!46D?~U!N-2c)Mm&EOzB83@$OP6JN{N)d0?tr-n^ z^QLOsoTUxbsQeH<7-IZy+y)cD4Kb}qlbXg=XtTB=tlEgPxL}=W`FXpYH~>xKqj8A)*< zxk(d2o%r5ks&P*q&^uDvC49yB0^5=-4DL>(P4{ihj0-imx>R(MGxx z20tcJK_XIwc(?J~p1R}3o`)Irj7~^gw>jO=$i}*<$evEB277E%9C#>7P-JAIA>i%CRc6pvTuQBM6FejM>I~{*U_9fAl8V9)Hd7YKW3n|Vk?;@=Kd=vLB1BmyRM&2I zSbF{NTX3ON=Fc;CWi4P&%Lub6FwLO46DBem#PNj1jq|@=3NRQSVi+HyZpS^0IPbzgyaV-vY3FsG zXOVy6Rk^K9h8LwW^xNBQ=?~xAad#7Q6N7|wLM6{0P&x<0#u6g^PS+3mz%n>h38Fk} zbt7rr#Yu{3i~v*4s$J3h?==TfG%w`r?OYD?T(-9<)*kBK9WS?_DfPS0!V>#1hm64K zXs(<|Wo8p%g-EU9DL}&Wg{l@|bGkoHud*|GmUJ&e#qSl>znu4uEv^1>j`fhy*X9)w z6XSR0Hr3S!{({=#iJiR`xpKdLIf+FdSTpd)ElB|d%U_&VF4kt0mejv^h%&SdU%llH zm8M&7X=;7SI7o2Eh3qf~Qup|3L!dh0Wcb7plE(gEM+Co|Vo1 zycsE3S2}iESIaU0Se5mbSDBbsr4XR*k%d2*nsn40W|7Ix_4K86IKWOLZXm9m~`- zLz@t#KBm+x4;T<#@A4?^zW<_LxWc}rvK~0Qfksb<1QE?S#8(&YqTde^6U-E<(?Mr) zz<=#48~+dX-aD#^uiyWTih?2_0#ZUzdM{D}22eymq>1$2Yv?6(P*Hk9QCetH1EEO` zgr?Gauc7zed-LXb&Uwz)@44sP-#@>**6*%+)|yOalFZItd-k5$^C_=4T6iK|h2@^t zy=SwTTk%cEl{ag9p*T~LKLw-c3VE{9+$aH4c3~1@MqMLNxka1P*YxdG<+WnJXqs63 zdC#Gb({!W*1uldm{3GMz(8I{>tPO@mx978E1t(1CQK$4KhYVY2FtJCcG6sYw%#^%rgAkC3>Pu#Y*0QjICFU@yf-pj#n>>n5Yw5sntUwEUjoQ(w!Ef zcL$U8w#OStL^i#nN7D^k z9W!OmmF)NRN~vb#10ipD;UD_c((ra8qWW*ms;V-F&mNqPm)xFKjflHd^Pb6U(m#a5 z>QhT+^qyH$z0-<_wJ`?E&EEs8;zOF3bW%BkKlZfn%Rv`C>~4NhDaf~4x3{&);Y3)8 zCUmJFfWr>kyK;;!(PT&Vp>jaV(r$!pWnL$dzBi`~>)q06G z4fG|`))^41Nv~`=yzUda(UB)FCi)wBv#p!;%k&F-YqWz}z}@7^Za@a1%)HOj3mEUF z;#xc6M7yi%aGmw-i!$sr4oc5UHe2FwB)q%jUQ0+mA`YKXWlhrE_nu&9o%p7!*c|b- z+}pUZFA8668o#RM`A|bxu_-3>H=ssizi8!0Pre}juvG9AYPwTX_op0{TM=oqK^1>Z zykDq)3-8v6&$IV9r>ETLt!z5(;Y~WeZDb$(TpF3K^%!aPN0i;I^zX3Ee!wgv}u1oh5*vLui`fDBx?d!f4F9+chrL2H2|i5lIyDrQu0Udv)4@X$}q@@WpBS z8uXa^4p)&8yE{UB{-XMZGhWNQmoxExVqlqe?k!tsB~^?_cw!d* zZ$L+gS2&3go6C%|U*exJ&>4~QipQ&k*VhDopo{OZRM%{{1V7k$M(g)r;cgH>imr)b z>k2qOdN!l={B`wZ{`wnkl|4p8^{V~#HGU2*XqbVg9<~R$+{sVN(!bVNYfs#hAe$nu zw#+TrWGRB=Zv#Gpf6{iYqnHCo3y)WMu5qm`@l>MC7iH<*wCHFD>#Pupi;@#|_X$?f zr?d+o)#r7L-ym9x^Ex8liy3~3bqy*Sx+u1NCA>A+bQ%$um6~LaIpo^#{xdKeXNo2j zI&vL9zIOf%kY9`5e(89Qa<zgtEizX2h-xbs%cG%(9=3CS#ET~r^{swFP^XX>M z6#V5l&@pI6ygM7>BS#rh?VA$ViN;pNR7d8=KfE5R?p;$WwEDC|@SOM=xUq*iXFPV~ zyt6wd#u|lHvh^(qmdwxr5KlTT);ex)S2V~dd@5dvNSc+q%(uRNvId5_HzWu2d0R*> z`d{DWTVHBwsN{7$S6@4FnK!~xid}KK>w0tQvjm8n&)j^zr1Hn%&rgFhe*@030iyq2 z@vF;+*&@YzYI@Xhks?DJV^{O}5p6&H`0UZ@-^N-@otn|+RtwJm`DX->Bi=>#VgK~vFbe3zl??rCf+&UkH zi_e5ro7<^coEM$c22~VR>4!3(0K_n;&i;3ETxSccr=-6DoPShXCvsjmAwsqneGqxB zq8RD&u>8b<&(_q90wiG)2eR*K?RIljF*yIIH6IrkZaeKrmN`6rCbGPlS=|utzjeI5 z%~|kAHB-al?;7<|gMLJwX+Ga$f(j^yP5NI(DqU}~&?G+(=N!kYNT@9A*%gz{POldI zu;HM$9ea^CK+Fj-Bh@r{_8EL*nJA7k9^mH}xxktK-xM6M2U1lA2~{pEd%NMr3|*rf z8Ay9REK{jeC-Dg+VImlCL!v3TrhVsN3vDo(DoO15HF^t%(bFajv0g6Bw%*wI!rQnP z`|gic`19oHTyxlq&dDS>@8)0UN<6D?`!tG=N2}DyW%fnc>@(7D`l9=W_1el(LfSE} zZuol#MpWh2=7_DtOotDoz{+H>V_ystfJVB^)KTz0Y)F0T_<>;``PW(1APQ(ED%0ZR zX^j>3cULe{uAaJY8~<~#sDgH?aEB;o3F|OY|Lwq^SDWO*&%JZNQ=~#_`8j>Bv$Yh1 zxqxR=GSXqL)_$gV9!HGO_4upYKYI&m^zt=!*aelapYvS2&OG>zY#jD#>ba-6N6%ZIHvo^_K^wpBWoNO@+Wj!W4)kJW2 zXQM9?baYG@0H_7`132wLnEe~TAp?5Q1}^8ujOfznDyb-GHP0#ba_@^T0nRBW@mB+) zaLxfV?}aYvnk=%Bh)oq5fYQAx{v=7uLu{5ORD^wE&CL&_&Pc;9KNzUyzL73Q;ZeT31xfirK5@Xpu=O?6hC|22}ey8|8~ zOq!7N=OjLZ_wpkSE3J!!Vr5Gs2CH75vN?@C^Z!Mx_=#xly6Q29?88}@3bqX|Z`-i>wugAt)t<@}&zb-_1 zf41iTw~yNR`@KQsk1naDIc#(nNtmb^zf4t!Sc#E$s?~NNCy#JX>4N0MrED7W@{ZkH zAx2i;Y5tS2|MlR{y{P{-Z1?~9i$7D6{$w>5rWsuKp9i0Dc$_BZQ_XS>!H|-Bd8do3 zpv6Co%KsV7@sA8BsllV5UoJ3?&dvL<-nhz69ayICh*~>Vs5%1LHR_s~B@vR2r(Pn*gT|_J#E-Sq0$>XXI!lU1Pd1jWw>Ia&)YQGz%&=>n9lG2i;}Fl$=B$IJWlM2ovuUo0p

    B0ud4qew)}s8fHN-7?2Wke?r_>d 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 **Note**: Do not use the `--recurse-submodules` option when cloning the repository or the `--recursive` option when initializing the submodules. This will clone redundant copies of the inter-dependent submodules. - -### 2. Create your configuration files - -- `cd knowledge-commons-works` -- Create and configure the `.env` file in this folder as described {ref}`here ` -- Create the `.invenio.private` file with the following contents: - -```shell -[cli] -services_setup = True -instance_path = /opt/invenio/var/instance -``` -### 3. Start the docker-compose project - -- `docker-compose --file docker-compose.yml up -d` - -### 4. Initialize the database and other services, and build asset files - -- enter the `web-ui` container by running `docker exec -it kcworks-ui bash` - -> **Note**: The container name may be different depending on your local docker setup. You can find the correct name by running `docker ps` - -- run the script to set up the instance services and build static assets `bash ./scripts/setup-services.sh` - -> **Note**: Some of the commands in this script may take a while to run. Patience is required! The `invenio rdm-records fixtures` command in particular may take up to an hour to complete during which time it provides no feedback. Don't despair! It is working. - -### 5. Create your own admin user - -- enter the `web-ui` container by running `docker exec -it kcworks-ui bash` - -> **Note**: The container name may be different depending on your local docker setup. You can find the correct name by running `docker ps` - -- run the commands: - -```shell -invenio users create --password -invenio users activate -invenio access allow administration-access user -``` - -### 6. View the application - -- The Knowledge Commons Works app is now running at `https://localhost` -- The REST API is running at `https://localhost/api` -- pgAdmin is running at `https://localhost/pgadmin` -- OpenSearch Dashboards is running at `https://localhost:5601` - -This setup will allow you to make changes to the core Knowledge Commons Works codebase and see those changes reflected in the running application. - -## Full local development setup - -You will need to take some further steps if you want to - - Make and test changes to the various invenio modules that are included as git submodules. - - View and insert debugging statements into the code of the various core Invenio packages installed into the python environment. -To do this, you will need to do the following: - -1. Ensure the required git submodules are cloned by running the following commands in the `knowledge-commons-works` folder: - ```shell - git submodule update --init - ``` - This will clone the following repositories: - ```shell - main git@github.com:MESH-Research/invenio-record-importer-kcworks.git - main git@github.com:MESH-Research/invenio-group-collections-kcworks.git - main git@github.com:MESH-Research/invenio-modular-deposit-form.git - main git@github.com:MESH-Research/invenio-modular-detail-page.git - main git@github.com:MESH-Research/invenio-remote-api-provisioner.git - main git@github.com:MESH-Research/invenio-remote-user-data-kcworks.git - local-working git@github.com:MESH-Research/invenio-communities.git - local-working git@github.com:MESH-Research/invenio-rdm-records.git - local-working git@github.com:MESH-Research/invenio-records-resources.git - local-working git@github.com:MESH-Research/invenio-vocabularies.git - ``` - These cloned repositories should then appear under the `knowledge-commons-works/site/kcworks/dependencies` folder. -2. Install the python packages required by Knowldge Commons Works locally by running `pipenv install` in the `knowledge-commons-works` folder. -3. When you start up the docker compose project, add an additional project file to the command: - - `docker-compose --file docker-compose.yml --file docker-compose.dev.yml up -d` -This will mount a variety of local package folders as bind mounts in your running containers. This will allow you to make changes to the python code in the cloned repositories and see those changes reflected in the running Knowledge Commons Works instance. - -## Controlling the KCWorks (Flask) application - -The application instance and its services can be started and stopped by starting and stopping the docker-compose project: - -```shell -docker-compose --file docker-compose.yml up -d -``` -```shell -docker-compose --file docker-compose.yml stop -``` - -> [!Caution] -> Do not use the `docker-compose down` command unless you want the containers to be destroyed. This will destroy all data in your database and all OpenSearch indices. YOU DO NOT WANT TO DO THIS! - -If you need to restart the main Flask application (e.g., after making configuration changes) you can do so either by stopping and restarting the docker-compose project or by running the following command inside the `kcworks-ui` container: - -```shell -uwsgi --reload /tmp/uwsgi_ui.pid -``` - -Similarly, the REST API can be restarted by running the following command inside the `web-ui` container: - -```shell -uwsgi --reload /tmp/uwsgi_api.pid -``` -But these commands should not be necessary in normal operation. diff --git a/docs/source/reference.md b/docs/source/reference.md deleted file mode 100644 index 0b77fdd69..000000000 --- a/docs/source/reference.md +++ /dev/null @@ -1,5 +0,0 @@ -# Reference - -## InvenioRDM Documentation - -The Knowledge Commons Works is built as an instance of InvenioRDM. The InvenioRDM Documentation, including customization and development information, can be found at https://inveniordm.docs.cern.ch/. \ No newline at end of file diff --git a/docs/source/api.md b/docs/source/reference/api.md similarity index 98% rename from docs/source/api.md rename to docs/source/reference/api.md index 9752569b5..5cbace13c 100644 --- a/docs/source/api.md +++ b/docs/source/reference/api.md @@ -4,9 +4,11 @@ KCWorks provides a robust REST API that allows clients to perform most operation ## The InvenioRDM REST API -KCWorks is built on top of InvenioRDM, which provides a REST API for creating, managing, and querying records. This API is documented at https://inveniordm.docs.cern.ch/reference/rest_api_index/. +KCWorks is built on top of InvenioRDM, which provides a REST API for creating, managing, and querying records. This API is documented at [https://inveniordm.docs.cern.ch/reference/rest_api_index/](https://inveniordm.docs.cern.ch/reference/rest_api_index/). -> **Note:** "Collections" are referred to as "communities" in the InvenioRDM API and its documentation. To avoid confusion with the social groups that are part of the Knowledge Commons network, KCWorks uses the term "collections" in its documentation and user interface. But operations involving collections are handled via the "communities" endpoint in the InvenioRDM REST API. +```{note} +"Collections" are referred to as "communities" in the InvenioRDM API and its documentation. To avoid confusion with the social groups that are part of the Knowledge Commons network, KCWorks uses the term "collections" in its documentation and user interface. But operations involving collections are handled via the "communities" endpoint in the InvenioRDM REST API. +``` This REST API allows clients to retrieve and manage the following resources: @@ -240,7 +242,11 @@ The following example shows a request to import a single work with two files and #### Metadata JSON object -The metadata JSON string for a journal article with a PDF file and a Word file, with a single owner might look like the sample below. **Note that the metadata must be provided as an array of metadata objects, even if it contains only a single object.** +The metadata JSON string for a journal article with a PDF file and a Word file, with a single owner might look like the sample below. + +```{note} +The metadata must be provided as an array of metadata objects, even if it contains only a single object. +``` ```json [{ @@ -641,8 +647,9 @@ The `group_collections` REST API endpoint allows a client to create, read, modif This endpoint is not configured to receive all of the metadata required to create or modify group collections. Rather, the `group_collections` endpoint receives minimal signals from a Commons Instance and then obtains the full required metadata via an API callback to the Commons instance. -> [!NOTE] -> KCWorks uses the term "collection" in place of the default term "community" employed in other InvenioRDM installations. This is partly to accommodate exactly the integration with Knowledge Commons groups that is discussed here. +```{note} +KCWorks uses the term "collection" in place of the default term "community" employed in other InvenioRDM installations. This is partly to accommodate exactly the integration with Knowledge Commons groups that is discussed here. +``` ### Group collection owner @@ -1268,8 +1275,9 @@ The resulting request body will be shaped like this: ### Changing the Group Ownership of a Collection (PATCH) -[!WARNING] +```{warning} PATCH requests to change group ownership of the collection are not yet implemented. +``` A PATCH request to this endpoint modifies an existing collection in Invenio by changing the Commons group to which it belongs. This is the *only* modification that can be made to a collection via this endpoint. Other modifications to Commons group metadata should be handled by signalling the Invenio webhook for commons group metadata updates. Modifications to internal metadata or settings for the Invenio collection should be made view the Invenio "communities" API or the collection settings UI. @@ -1335,12 +1343,14 @@ If any of these is missing the request will fail with a `400 Bad Request` error. If the collection is successfully deleted, the response status code will be 204 No Content. -[!NOTE] +```{note} Once a group collection has been deleted, its former URL slug is still registered in Invenio's PID store and reserved for the (now deleted) collection. Subsequent requests to create a collection for the same group cannot re-use the same URL slug. Instead the new slug will have a numerical disambiguator added to the end, exactly as in cases of group name collision. E.g., if the group `panda-studies` were deleted earlier, a request to create a new collection for the "Panda Studies" group would be assigned the URL slug `panda-studies-1`. +``` -[!NOTE] +```{note} Group collections are soft deleted and can in principle be restored within a short period after the delete signal has been sent. Eventually, though, the soft deleted collection records will be automatically purged entirely from the database. There is also no API mechanism for restoring them. So delete operations should be regarded as permanent and irrevocable. +``` #### Request @@ -1373,11 +1383,13 @@ Required request headers: https://works.hcommons.org/api/webhooks/user_data_update ``` -> [!WARNING] -> This API endpoint is intended for internal use only. It is not intended to be used by clients outside of the Knowledge Commons system. +```{warning} +This API endpoint is intended for internal use only. It is not intended to be used by clients outside of the Knowledge Commons system. +``` -> [!NOTE] -> This API was implemented with a distributed network of independent Commons instances in mind. Currently, only the Knowledge Commons instance exists and is supported as a SAML IDP by KCWorks. +```{note} +This API was implemented with a distributed network of independent Commons instances in mind. Currently, only the Knowledge Commons instance exists and is supported as a SAML IDP by KCWorks. +``` The api endpoint `/api/webhooks/user_data_update` is provided for Knowledge Commons applications and instances to signal that user or group metadata has been changed. These endpoints do not receive the actual updated data. They only receive notices *that* the metadata for a user or group has changed. KCWorks will then query the Commons instance's endpoint to retrieve current metadata for the user or group. @@ -1428,7 +1440,9 @@ Top level payload object properties: | `users` | array | An array of objects each representing one metadata change event for a single user. | N | | `groups` | array | An array of objects each representing one metadata change for a single group. | N | -NOTE: A valid payload *must* provide either a `users` array or a `groups` array with at least one member. Requests providing neither `users` nor `groups`, or providing only empty arrays, will result in an error response. +```{note} +A valid payload *must* provide either a `users` array or a `groups` array with at least one member. Requests providing neither `users` nor `groups`, or providing only empty arrays, will result in an error response. +``` `users` and `groups` object properties diff --git a/docs/source/cli_commands.md b/docs/source/reference/cli_commands.md similarity index 100% rename from docs/source/cli_commands.md rename to docs/source/reference/cli_commands.md diff --git a/docs/source/reference/index.md b/docs/source/reference/index.md new file mode 100644 index 000000000..d217ec830 --- /dev/null +++ b/docs/source/reference/index.md @@ -0,0 +1,10 @@ +Reference +========= + +```{toctree} +:maxdepth: 2 + +metadata +api +cli_commands +``` diff --git a/docs/source/metadata.md b/docs/source/reference/metadata.md similarity index 97% rename from docs/source/metadata.md rename to docs/source/reference/metadata.md index 088f2e8e6..ee424efd6 100644 --- a/docs/source/metadata.md +++ b/docs/source/reference/metadata.md @@ -567,8 +567,9 @@ Note that the KC username of a creator or contributor may be stored in the `pers Users are also strongly encouraged to include an ORCID identifier in the `person_or_org.identifiers` array with the scheme `orcid`. -> [!Note] -> The KC username is the primary link between a KCWorks record and a KC user. If you want a work to be associated with a KC user, you must include the KC username in creator or contributor object. +```{note} +The KC username is the primary link between a KCWorks record and a KC user. If you want a work to be associated with a KC user, you must include the KC username in creator or contributor object. +``` Example: ```json @@ -837,8 +838,9 @@ Type: `Array[string]` This field stores a list of user-defined tags for the KCWorks record. Unlike the `metadata.subjects` field, these tags are not constrained by any controlled vocabulary. Items should be free-form strings that describe the KCWorks record in a way that is not covered by the `metadata.subjects` field. -> [!Note] -> The `kcr:user_defined_tags` field is intended to supplement the `metadata.subjects` field, not as the primary means of describing the KCWorks record's subject matter. Assigning proper `metadata.subjects` entries allows for much more effective search and discovery of the KCWorks record. +```{note} +The `kcr:user_defined_tags` field is intended to supplement the `metadata.subjects` field, not as the primary means of describing the KCWorks record's subject matter. Assigning proper `metadata.subjects` entries allows for much more effective search and discovery of the KCWorks record. +``` Example: ```json @@ -851,8 +853,9 @@ Example: This field is used to store the persistent identifier for the KCWorks record in the KC central search index. -> [!Warning] -> This field is automatically generated by the `invenio-remote-api-provisioner` service when a KCWorks record is published. It *must not* be set by the user. +```{warning} +This field is automatically generated by the `invenio-remote-api-provisioner` service when a KCWorks record is published. It *must not* be set by the user. +``` ### kcr:commons_search_updated (system field) @@ -860,8 +863,9 @@ Type: `string` (ISO 8601 datetime string) This field stores the date and time when the KCWorks record was last updated in the KC central search index. -> [!Warning] -> This field is automatically generated by the `invenio-remote-api-provisioner` service when a KCWorks record is published. It *must not* be set by the user. +```{warning} +This field is automatically generated by the `invenio-remote-api-provisioner` service when a KCWorks record is published. It *must not* be set by the user. +``` ## HC Legacy Custom Fields diff --git a/docs/source/setup/configuration.md b/docs/source/setup/configuration.md new file mode 100644 index 000000000..6c63331ff --- /dev/null +++ b/docs/source/setup/configuration.md @@ -0,0 +1 @@ +# Configuration of KCWorks diff --git a/docs/source/setup/index.md b/docs/source/setup/index.md new file mode 100644 index 000000000..7277e8224 --- /dev/null +++ b/docs/source/setup/index.md @@ -0,0 +1,8 @@ +# Setting up KCWorks + +```{toctree} +:maxdepth: 2 + +configuration.md +installation.md +``` diff --git a/docs/source/setup/installation.md b/docs/source/setup/installation.md new file mode 100644 index 000000000..cbc7cf1d5 --- /dev/null +++ b/docs/source/setup/installation.md @@ -0,0 +1,197 @@ +# Installation + +## Quickstart + +These instructions allow you to run Knowledge Commons Works for local development. The app source files are copied onto your system, but the Flask application and other services (database, search, etc.) are run in Docker containers. The application is served to your browser by an nginx web server running in a separate container. + +First you will need to have the correct versions of Docker (20.10.10+ with Docker Compose 1.17.0+) and Python (3.12.0+). You will also need to have Python's `uv` package manager installed (see [the uv docs](https://docs.astral.sh/uv/getting-started/installation/) for details). If you are going to run frontend development tests you will also need to have Node.js (20+) and npm (10.9.0+) installed. + +From there, installation involves these steps. Each one is further explained below, but here is a quick reference: + +### 1. Clone the git repository + +- From your command line, navigate to the parent folder where you want the cloned repository code to live +- Clone the knowledge-commons-works repository with `git clone git@github.com:MESH-Research/knowledge-commons-works.git && git submodule update --init` + +```{note} +Do not use the `--recurse-submodules` option when cloning the repository or the `--recursive` option when initializing the submodules. This will clone redundant copies of the inter-dependent submodules. +``` + +### 2. Create your configuration files + +- `cd knowledge-commons-works` +- Create and configure the `.env` file in this folder as described {ref}`here ` +- Create the `.invenio.private` file with the following contents: + +```shell +[cli] +services_setup = True +instance_path = /opt/invenio/var/instance +``` + +### 3. Start the docker-compose project + +- `docker-compose --file docker-compose.yml up -d` + +### 4. Initialize the database and other services, and build asset files + +- enter the `web-ui` container by running `docker exec -it kcworks-ui bash` + +```{note} +The container name may be different depending on your local docker setup. You can find the correct name by running `docker ps` +``` + +- run the script to set up the instance services and build static assets `bash ./scripts/setup-services.sh` + +```{note} +Some of the commands in this script may take a while to run. Patience is required! The `invenio rdm-records fixtures` command in particular may take up to an hour to complete during which time it provides no feedback. Don't despair! It is working. +``` + +### 5. Create your own admin user + +- enter the `web-ui` container by running `docker exec -it kcworks-ui bash` + +```{note} +The container name may be different depending on your local docker setup. You can find the correct name by running `docker ps` +``` + +- run the commands: + +```shell +invenio users create --password +invenio users activate +invenio access allow administration-access user +``` + +### 6. View the application + +- The Knowledge Commons Works app is now running at `https://localhost` +- The REST API is running at `https://localhost/api` +- pgAdmin is running at `https://localhost/pgadmin` +- OpenSearch Dashboards is running at `https://localhost:5601` + +This setup will allow you to make changes to the core Knowledge Commons Works codebase and see those changes reflected in the running application. + +## Full local development setup + +You will need to take some further steps if you want to + - Make and test changes to the various invenio modules that are included as git submodules. + - View and insert debugging statements into the code of the various core Invenio packages installed into the python environment. +To do this, you will need to do the following: + +1. Ensure the required git submodules are cloned by running the following commands in the `knowledge-commons-works` folder: + ```shell + git submodule update --init + ``` + This will clone the following repositories: + ```shell + main git@github.com:MESH-Research/invenio-record-importer-kcworks.git + main git@github.com:MESH-Research/invenio-group-collections-kcworks.git + main git@github.com:MESH-Research/invenio-modular-deposit-form.git + main git@github.com:MESH-Research/invenio-modular-detail-page.git + main git@github.com:MESH-Research/invenio-remote-api-provisioner.git + main git@github.com:MESH-Research/invenio-remote-user-data-kcworks.git + local-working git@github.com:MESH-Research/invenio-communities.git + local-working git@github.com:MESH-Research/invenio-rdm-records.git + local-working git@github.com:MESH-Research/invenio-records-resources.git + local-working git@github.com:MESH-Research/invenio-vocabularies.git + ``` + These cloned repositories should then appear under the `knowledge-commons-works/site/kcworks/dependencies` folder. +2. Install the python packages required by Knowldge Commons Works locally by running `uv sync --all-extras` in the `knowledge-commons-works` folder. +3. When you start up the docker compose project, add an additional project file to the command: + - `docker-compose --file docker-compose.yml --file docker-compose.dev.yml up -d` +This will mount a variety of local package folders as bind mounts in your running containers. This will allow you to make changes to the python code, both in the cloned repositories and in the `knowledge-commons-works/.venv` virtual environment, and see those changes reflected in the running Knowledge Commons Works instance. + +## Controlling the KCWorks (Flask) application + +The application instance and its services can be started and stopped by starting and stopping the docker-compose project: + +```shell +docker-compose --file docker-compose.yml up -d +``` +```shell +docker-compose --file docker-compose.yml stop +``` + +```{caution} +Do not use the `docker-compose down` command unless you want the containers to be destroyed. This will destroy all data in your database and all OpenSearch indices. YOU DO NOT WANT TO DO THIS! +``` + +If you need to restart the main Flask application (e.g., after making configuration changes) you can do so either by stopping and restarting the docker-compose project or by running the following command inside the `kcworks-ui` container: + +```shell +uwsgi --reload /tmp/uwsgi_ui.pid +``` + +Similarly, the REST API can be restarted by running the following command inside the `kcworks-api` container: + +```shell +uwsgi --reload /tmp/uwsgi_api.pid +``` +But these commands should not be necessary in normal operation. + +## Setting up configuration files + +### Configuring your `.env` file + +The `.env` file is used to configure the Knowledge Commons Works application. It is a standard python environment file that is used to set the environment variables for the application. + +These are the minimal variables that you need to set in your `.env` file to get the application running: + +```shell +FLASK_DEBUG=1 +INVENIO_INSTANCE_PATH=/opt/invenio/var/instance +INVENIO_LOGGING_CONSOLE=True +INVENIO_LOGGING_CONSOLE_LEVEL=DEBUG +INVENIO_RECORD_IMPORTER_LOCAL_DATA_DIR=/ +INVENIO_RECORD_IMPORTER_DATA_DIR=/opt/invenio/var/import_data +INVENIO_SEARCH_DOMAIN='search:9200' +INVENIO_SITE_UI_URL="https://localhost" +INVENIO_SITE_API_URL="https://localhost/api" +REDIS_DOMAIN='cache:6379' +INVENIO_SQLALCHEMY_DATABASE_URI="postgresql+psycopg2://kcworks:PASSWORDHERE@db/kcworks" # DON'T FORGET TO CHANGE THE PASSWORD HERE +POSTGRES_USER=kcworks +POSTGRES_DB=kcworks +INVENIO_CSRF_SECRET_SALT='GENERATE_IT_AS_PER_INSTRUCTIONS' +INVENIO_SECURITY_LOGIN_SALT='GENERATE_IT_AS_PER_INSTRUCTIONS' +INVENIO_SECRET_KEY='SECRET_KEY_VERY_SECRET' +COMMONS_API_TOKEN=mytoken # this must be obtained from the Commons administrators - just leave as is +COMMONS_SEARCH_API_TOKEN=mytoken # this must be obtained from the Commons administrators - just leave as is +INVENIO_DATACITE_PASSWORD=myinveniodatacitepassword # this must be obtained from the Commons administrators - just leave as is +API_TOKEN=myapitoken # just leave as is +INVENIO_LOCAL_SITE_PATH=/local/path/to/cloned/repository/knowledge-commons-works/site # set this to `site` under the base directory of your cloned repository +INVENIO_LOCAL_DEPENDENCIES_PATH=/local/path/to/cloned/repository/knowledge-commons-works/site/kcworks/dependencies # set this to `site/kcworks/dependencies` under the base directory of your cloned repository +PYTHON_LOCAL_SITE_PACKAGES_PATH=/local/path/to/cloned/repository/knowledge-commons-works/.venv/lib/python3.12/site-packages # you need this for dev +POSTGRES_PASSWORD=PASSWORDHERE +PGADMIN_DEFAULT_EMAIL=your.email@example.com +PGADMIN_DEFAULT_PASSWORD=PASSWORDHERE +INVENIO_LOCAL_INSTANCE_PATH=/opt/invenio/var/instance +``` + +```{note} +Don't forget to change the `PASSWORDHERE` values to the actual passwords you use for your admin user and pgAdmin. This includes replacing `PASSWORDHERE` in the `INVENIO_SQLALCHEMY_DATABASE_URI` variable. +``` + +#### Generating random secrets + +Random values for secrets like INVENIO_SECRET_KEY can be generated in a terminal by running + +```shell +python -c 'import secrets; print(secrets.token_hex())' +``` + +#### Generating an API token + +Once you are up and running, you will need to replace the dummy `API_TOKEN` variable in your `.env` file with a genuine oAuth token that identifies you when you make API requests from your local instance. You can generate a token for yourself in the KC Works admin ui and enter it as the value of the `API_TOKEN` variable. + +### Configuring your `.invenio.private` file + +The `.invenio.private` file is used to configure the Knowledge Commons Works application. It is a standard python environment file that is used to set the environment variables for the application. + +Here is a list of the variables that you need to set in your `.invenio.private` file: + +```shell +[cli] +services_setup = True +instance_path = /opt/invenio/var/instance +``` \ No newline at end of file diff --git a/invenio.cfg b/invenio.cfg index abe69cb7d..1e251e5ae 100644 --- a/invenio.cfg +++ b/invenio.cfg @@ -150,6 +150,9 @@ from kcworks.services.notifications.backends import ( EmailNotificationBackend, InternalNotificationBackend, ) +from kcworks.services.records.record_communities.community_change_permissions_component import ( + CommunityChangePermissionsComponent, +) from invenio_record_importer_kcworks.services.stats.aggregations import ( StatAggregatorOverridable, ) @@ -706,80 +709,39 @@ MODULAR_DETAIL_PAGE_SIDEBAR_SECTIONS_RIGHT = [ { "section": _("Download"), "component_name": "SidebarDownloadSection", - "props": [ - "defaultPreviewFile", - "downloadFileUrl", - "files", - "fileTabIndex", - "hasFiles", - "isPreview", - "permissions", - "previewFileUrl", - "record", - "sectionIndex", - "setActivePreviewFile", - "setActiveTab", - "tabbedSections", - "totalFileSize", - ], "show": "computer large-monitor widescreen only", }, { "section": _("Collections"), "component_name": "CommunitiesBanner", - "props": [ - "additionalCommunities", - "canManageRecord", - "community", - "isPreviewSubmissionRequest", - "permissions", - "record", - "recordCommunityEndpoint", - "recordCommunitySearchConfig", - "recordUserCommunitySearchConfig", - "searchConfig", - "userCommunitiesMemberships", - ], "show": "computer large-monitor widescreen only", }, { "section": _("Content Warning"), "component_name": "ContentWarning", - "props": ["record"], }, { "section": _("AI Use"), "component_name": "AIUsageAlert", - "props": ["record"], }, { "section": _("Versions"), "component_name": "VersionsDropdownSection", - "props": ["isPreview", "record"], "show_heading": False, }, { "section": _("Keywords & Subjects"), "component_name": "SidebarSubjectsSection", - "props": ["record"], "show": "computer large-monitor widescreen only", }, { "section": _("Cite this"), "component_name": "CitationSection", - "props": ["record", "citationStyles", "citationStyleDefault"], "show": "computer large-monitor widescreen only", }, { "section": _("Details"), "component_name": "SidebarDetailsSection", - "props": [ - "customFieldsUi", - "doiBadgeUrl", - "identifierSchemes", - "landingUrls", - "record", - ], "subsections": [ # {"section": "Resource type"}, {"section": "Published in"}, @@ -801,29 +763,16 @@ MODULAR_DETAIL_PAGE_SIDEBAR_SECTIONS_RIGHT = [ { "section": _("Licenses"), "component_name": "SidebarRightsSection", - "props": ["rights"], "show": "tablet computer only", }, { "section": _("Export"), "component_name": "SidebarExportSection", - "props": [ - "community", - "isPreview", - "recordExporters", - "record", - ], "show": "computer large-monitor widescreen only", }, { "section": _("Share"), "component_name": "SidebarSharingSection", - "props": [ - "community", - "record", - "isPreview", - "isPreviewSubmissionRequest", - ], "show": "computer large-monitor widescreen only", }, ] @@ -834,22 +783,10 @@ MODULAR_DETAIL_PAGE_MAIN_SECTIONS = [ { "section": _("Title"), "component_name": "RecordTitle", - "props": ["title", "isPreviewSubmissionRequest"], }, { "section": _("Creators and Contributors"), "component_name": "CreatibutorsShortList", - "props": [ - "creators", - "contributors", - "iconsRor", - "iconsOrcid", - "iconsGnd", - "iconsKcUsername", - "iconsIsni", - "landingUrls", - "isPreviewSubmissionRequest", - ], }, { "section": "Tabs", @@ -862,35 +799,13 @@ MODULAR_DETAIL_PAGE_MAIN_SECTIONS = [ { "section": _("Descriptions"), "component_name": "Descriptions", - "props": [ - "description", - "additionalDescriptions", - "hasFiles", - "permissions", - ], }, { "section": _("Preview"), "component_name": "FilePreviewWrapper", - "props": [ - "activePreviewFile", - "defaultPreviewFile", - "files", - "isPreview", - "hasFiles", - "hasPreviewableFiles", - "permissions", - "previewableExtensions", - "previewFile", - "previewFileUrl", - "record", - "setActivePreviewFile", - "totalFileSize", - ], }, ], "tab": True, - "props": [], }, { "section": _("Details"), @@ -899,21 +814,6 @@ MODULAR_DETAIL_PAGE_MAIN_SECTIONS = [ { "section": _("Publication"), "component_name": "PublishingDetails", - "props": [ - "customFieldsUi", - "doiBadgeUrl", - "hasFiles", - "iconsKcUsername", - "iconsIsni", - "iconsGnd", - "iconsOrcid", - "iconsRor", - "identifierSchemes", - "landingUrls", - "localizedStats", - "record", - "showDecimalSizes", - ], "subsections": [ { "section": _("Contributors"), @@ -1021,7 +921,6 @@ MODULAR_DETAIL_PAGE_MAIN_SECTIONS = [ } ], "tab": True, - "props": [], }, { "section": _("Contributors"), @@ -1031,19 +930,9 @@ MODULAR_DETAIL_PAGE_MAIN_SECTIONS = [ "section": "Contributors", "component_name": "Creatibutors", "subsections": [], - "props": [ - "creators", - "contributors", - "iconsRor", - "iconsOrcid", - "iconsGnd", - "iconsKcUsername", - "landingUrls", - ], } ], "tab": True, - "props": [], "show": "tablet computer only", }, { @@ -1053,16 +942,9 @@ MODULAR_DETAIL_PAGE_MAIN_SECTIONS = [ { "section": "Analytics", "component_name": "Analytics", - "props": [ - "hasFiles", - "localizedStats", - "showDecimalSizes", - "record", - ], } ], "tab": True, - "props": [], "show": "tablet computer only", }, { @@ -1071,11 +953,9 @@ MODULAR_DETAIL_PAGE_MAIN_SECTIONS = [ "subsections": [ { "component_name": "MainSubjectsSection", - "props": ["record"], } ], "tab": True, - "props": [], "show": "mobile tablet only", }, { @@ -1085,44 +965,13 @@ MODULAR_DETAIL_PAGE_MAIN_SECTIONS = [ { "section": "FilesPreview", "component_name": "FilePreview", - "props": [ - "activePreviewFile", - "files", - "isPreview", - "hasFiles", - "hasPreviewableFiles", - "permissions", - "previewableExtensions", - "previewFile", - "previewFileUrl", - "record", - "setActivePreviewFile", - "totalFileSize", - ], }, { "section": "FilesBox", "component_name": "FileListBox", - "props": [ - "activePreviewFile", - "downloadFileUrl", - "files", - "isPreview", - "hasFiles", - "permissions", - "previewFile", - "previewFileUrl", - "previewTabIndex", - "record", - "setActivePreviewFile", - "setActiveTab", - "showDecimalSizes", - "totalFileSize", - ], }, ], "tab": True, - "props": [], }, ], }, @@ -1174,6 +1023,10 @@ DATACITE_DATACENTER_SYMBOL = "MSU.CORE" RDM_RECORDS_ALLOW_RESTRICTION_AFTER_GRACE_PERIOD = True """Whether record access restriction is allowed after the grace period or not.""" +RDM_RECORD_COMMUNITIES_SERVICE_COMPONENTS = [ + CommunityChangePermissionsComponent, +] + # Persistent identifiers configuration # RDM_PERSISTENT_IDENTIFIER_PROVIDERS = [ @@ -1646,6 +1499,12 @@ RECORD_IMPORTER_COMMUNITIES = { "email_template_register": "welcome_neh", } } +# Invenio-logging Sentry +# ---------------------- +LOGGING_SENTRY_INIT_KWARGS = { + "send_default_pii": True, +} +LOGGING_SENTRY_LEVEL = "DEBUG" # Invenio-Previewer # ================= @@ -1876,7 +1735,6 @@ COMMUNITIES_ROLES = [ description=_("Full administrative access to the entire community."), can_manage_roles=[ "owner", - "administrator", "manager", "curator", "reader", @@ -1903,6 +1761,21 @@ GROUP_COLLECTIONS_METADATA_ENDPOINTS = { }, } +# Selective per-field editing permissions +# ===================================== + +RDM_RECORDS_PERMISSIONS_PER_FIELD = { + "default": {}, + "cool-collection-3": { + "policy": { + "metadata.funding": ["owner", "manager"], + "metadata.title": ["owner", "manager"], + "custom_fields.kcr:ai_usage.ai_used": ["owner", "manager"], + "parent.communities.default": ["owner", "manager"], + }, + } +} + # MODULAR DEPOSIT FORM # ==================== diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 000000000..58a89e7ec --- /dev/null +++ b/jest.config.js @@ -0,0 +1,41 @@ +module.exports = { + verbose: true, + testEnvironment: 'jsdom', + roots: ['/assets/', '/site'], + moduleFileExtensions: ['js', 'jsx', 'json'], + moduleNameMapper: { + '\\.(css|less|scss|sass)$': 'identity-obj-proxy', + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': + '/__mocks__/fileMock.js', + '^@(translations|js)/invenio_rdm_records/(.*)$': '/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/assets/semantic-ui/$1/invenio_rdm_records/$2', + '^@(translations|js)/invenio_communities/(.*)$': '/site/kcworks/dependencies/invenio-communities/invenio_communities/assets/semantic-ui/$1/invenio_communities/$2', + '^@(translations|js)/invenio_app_rdm/(.*)$': '/.venv/lib/python3.12/site-packages/invenio_app_rdm/theme/assets/semantic-ui/$1/invenio_app_rdm/$2', + '^@(translations|js)/(invenio_search_ui|invenio_theme)/(.*)$': '/.venv/lib/python3.12/site-packages/$2/assets/semantic-ui/$1/$2/$3', + '^@js/invenio_rdm_records$': '/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records', + '^@js/invenio_communities$': '/site/kcworks/dependencies/invenio-communities/invenio_communities/assets/semantic-ui/js/invenio_communities', + '^@translations/invenio_rdm_records/i18next$': '/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/i18next.js', + '^@custom-test-utils/(.*)$': '/tests/js/$1', + '^@js/invenio_modular_deposit_form/(.*)$': '/site/kcworks/dependencies/invenio-modular-deposit-form/invenio_modular_deposit_form/assets/semantic-ui/js/invenio_modular_deposit_form/$1', + '^@translations/(.*)$': '/assets/translations/$1', + }, + setupFilesAfterEnv: ['/jest.setup.js'], + transform: { + '^.+\\.(js|jsx)$': 'babel-jest', + }, + transformIgnorePatterns: [ + '/node_modules/(?!(react-invenio-forms|react-searchkit|axios|semantic-ui-react|@babel|@inveniosoftware)/)', + ], + testMatch: ['**/*.test.js?(x)', '**/*.spec.js?(x)'], + collectCoverageFrom: [ + 'assets/**/*.{js,jsx}', + 'site/**/*.{js,jsx}', + '!**/node_modules/**', + '!**/vendor/**', + '!**/*.test.{js,jsx}', + '!**/*.spec.{js,jsx}', + ], + coverageDirectory: 'coverage', + coverageReporters: ['text', 'lcov'], + resetMocks: true, + restoreMocks: true, +}; \ No newline at end of file diff --git a/jest.setup.js b/jest.setup.js new file mode 100644 index 000000000..3331e86d9 --- /dev/null +++ b/jest.setup.js @@ -0,0 +1,23 @@ +import '@testing-library/jest-dom'; + +// Mock window.matchMedia +Object.defineProperty(window, 'matchMedia', { + writable: true, + value: jest.fn().mockImplementation(query => ({ + matches: false, + media: query, + onchange: null, + addListener: jest.fn(), + removeListener: jest.fn(), + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + dispatchEvent: jest.fn(), + })), +}); + +// Mock ResizeObserver +global.ResizeObserver = class ResizeObserver { + observe() {} + unobserve() {} + disconnect() {} +}; \ No newline at end of file diff --git a/kcr-shutdown.sh b/kcr-shutdown.sh deleted file mode 100644 index 26f10ef34..000000000 --- a/kcr-shutdown.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -echo "Shutting down Knowledge Commons Repository instance..." -echo " stopping docker containers" -docker-compose stop -echo " stopping celery worker" -ps auxww | grep 'celery worker' | grep -v " grep " | awk '{print $2}' | xargs kill -9 -echo " stopping ui application" -pipenv run uwsgi --stop /tmp/kcw_ui.pid -echo " stopping api application" -pipenv run uwsgi --stop /tmp/kcw_api.pid -echo "Finished!" \ No newline at end of file diff --git a/kcr-startup.sh b/kcr-startup.sh deleted file mode 100644 index cd8d4f4f9..000000000 --- a/kcr-startup.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -echo "Starting up the Knowledge Commons Repository instance..." -if [ ! -f ./.env ]; then - touch .env - echo "creating .env file" -fi -if [ -f ./.invenio.private ]; then - ip=$(sed '3!d' .invenio.private | sed -e "s/^instance_path = //") - last_line=$(tail -1 ./.env) - if [[ $last_line == "INVENIO_LOCAL_INSTANCE_PATH"* ]]; then - echo "deleting old instance path" - sed -i "" '$d' .env - fi - echo "adding instance path to .env file as ${ip}" - [ "$(tail -c1 ./.env)" = "" ] || echo >> ./.env - echo "INVENIO_LOCAL_INSTANCE_PATH=${ip}" >> ./.env -fi -if [ ! -d "logs" ]; then - mkdir logs - echo "creating logs directory" -fi -echo " starting docker containers" -docker-compose up -d -echo " started docker containers" -echo " starting celery worker" -pipenv run celery --app invenio_app.celery worker --beat --events --loglevel INFO --detach -f logs/celery.log -echo " started celery worker" -mydate=$(date +%Y-%m-%d) -pipenv run uwsgi docker/uwsgi/uwsgi_ui.ini --daemonize=logs/uwsgi-ui-${mydate}.log --log-reopen --pidfile=/tmp/kcw_ui.pid -echo " started wsgi process for ui application" -pipenv run uwsgi docker/uwsgi/uwsgi_rest.ini --daemonize=logs/uwsgi-api-${mydate}.log --log-reopen --pidfile=/tmp/kcw_api.pid -echo " started wsgi process for REST api application" -echo "Knowledge Commons Repository is now available at https://localhost" \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9f1db0fb4..0865568dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,98 +1,126 @@ { - "name": "kcworks", - "lockfileVersion": 2, + "name": "knowledge-commons-works", + "lockfileVersion": 3, "requires": true, "packages": { "": { "devDependencies": { + "@artsy/fresnel": "^6.1.0", + "@babel/core": "^7.26.10", "@babel/preset-env": "^7.21.4", "@babel/preset-react": "^7.18.6", + "@reduxjs/toolkit": "^2.6.1", "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^14.0.0", + "@testing-library/react": "^12.1.5", "babel-jest": "^29.5.0", "formik": "^2.2.9", + "i18next": "^20.6.1", + "i18next-browser-languagedetector": "^6.1.8", + "i18next-conv": "^15.1.1", + "i18next-scanner": "^4.6.0", + "identity-obj-proxy": "^3.0.0", "jest": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", "prop-types": "^15.8.1", - "react-scripts": "^5.0.1", - "react-test-renderer": "^18.2.0", + "react": "^16.13.0", + "react-dnd": "^11.1.3", + "react-dnd-html5-backend": "^11.1.3", + "react-dom": "^16.13.0", + "react-dropzone": "^11.7.1", + "react-i18next": "^11.18.6", + "react-invenio-forms": "^4.8.2", + "react-redux": "^7.2.9", + "react-scripts": "^4.0.3", + "react-searchkit": "^3.0.0", + "react-test-renderer": "^16.13.0", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", "semantic-ui-css": "^2.5.0", "semantic-ui-less": "^2.5.0", "semantic-ui-react": "^2.1.4" } }, "node_modules/@adobe/css-tools": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz", - "integrity": "sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==", - "dev": true - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.2.tgz", + "integrity": "sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, + "node_modules/@artsy/fresnel": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@artsy/fresnel/-/fresnel-6.1.0.tgz", + "integrity": "sha512-PexfFmf3Un3C752SFpryYROgahfdSsHhNETSZlJcO0W3MJ14hyw/MbLQl3DnNdQGIJZE6y1MbnH7ntEt8PWB0Q==", + "dev": true, + "engines": { + "node": ">=12.20.2", + "yarn": "1.x.x" + }, + "peerDependencies": { + "react": ">=16.3.0" + } + }, "node_modules/@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", - "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", - "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.4", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.4", - "@babel/types": "^7.21.4", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -102,133 +130,67 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/eslint-parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.21.3.tgz", - "integrity": "sha512-kfhmPimwo6k4P8zxNs8+T7yR44q1LdpsZdE1NkCsVlfiuTPRfnGgjaF8Qgug9q9Pou17u6wneYF0lDCZJATMFg==", - "dev": true, - "dependencies": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.11.0", - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@babel/eslint-parser/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", - "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.21.4", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", - "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", + "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.21.4", - "@babel/helper-validator-option": "^7.21.0", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.26.8", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz", - "integrity": "sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz", + "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-member-expression-to-functions": "^7.21.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.27.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -238,13 +200,15 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz", - "integrity": "sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz", + "integrity": "sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.3.1" + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -254,301 +218,351 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.14.2" }, "peerDependencies": { - "@babel/core": "^7.4.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", - "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.21.0" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.21.4" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", - "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "node_modules/@babel/helpers": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.20.2" + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "node_modules/@babel/highlight": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", + "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.20.0" + "@babel/helper-validator-identifier": "^7.25.9", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=4" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">=4" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/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": ">=6.9.0" + "node": ">=0.8.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">=4" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", - "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=4" } }, - "node_modules/@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" + "@babel/types": "^7.27.0" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=6.0.0" } }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/parser": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", - "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "version": "7.25.9", + "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.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -558,14 +572,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", - "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -574,29 +589,30 @@ "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -608,34 +624,34 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", - "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", + "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-decorators": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.12.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz", - "integrity": "sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w==", + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/plugin-syntax-decorators": "^7.21.0" + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -644,14 +660,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { + "node_modules/@babel/plugin-proposal-numeric-separator": { "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==", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { "node": ">=6.9.0" @@ -660,14 +678,17 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -676,14 +697,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-json-strings": { + "node_modules/@babel/plugin-proposal-private-methods": { "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==", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" @@ -692,15 +715,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -708,145 +728,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", - "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -859,6 +746,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -871,6 +759,7 @@ "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" }, @@ -883,6 +772,7 @@ "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" }, @@ -894,12 +784,13 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz", - "integrity": "sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", + "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -908,37 +799,30 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz", + "integrity": "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.25.9" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz", - "integrity": "sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -947,13 +831,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -967,6 +852,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -979,6 +865,7 @@ "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" }, @@ -987,12 +874,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", - "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1006,6 +894,7 @@ "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" }, @@ -1018,6 +907,7 @@ "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" }, @@ -1030,6 +920,7 @@ "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" }, @@ -1042,6 +933,7 @@ "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" }, @@ -1054,6 +946,7 @@ "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" }, @@ -1066,6 +959,7 @@ "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" }, @@ -1078,6 +972,7 @@ "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" }, @@ -1093,6 +988,7 @@ "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" }, @@ -1104,12 +1000,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", - "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1118,13 +1015,31 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", - "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1133,15 +1048,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", - "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.26.8" }, "engines": { "node": ">=6.9.0" @@ -1150,13 +1066,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1165,13 +1084,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", - "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1180,21 +1100,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", - "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz", + "integrity": "sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1203,14 +1116,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", - "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/template": "^7.20.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1219,29 +1133,36 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", - "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.12.0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" @@ -1250,13 +1171,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1265,14 +1188,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1281,14 +1204,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz", - "integrity": "sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-flow": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1297,13 +1221,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz", - "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1312,30 +1237,31 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1344,13 +1270,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1359,14 +1286,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", - "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1375,15 +1302,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz", - "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==", + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.26.5.tgz", + "integrity": "sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/plugin-syntax-flow": "^7.26.0" }, "engines": { "node": ">=6.9.0" @@ -1392,16 +1319,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", - "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1410,14 +1336,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1426,29 +1354,30 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1457,14 +1386,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1473,13 +1402,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", - "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1488,13 +1418,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1503,13 +1435,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.21.3.tgz", - "integrity": "sha512-4DVcFeWe/yDYBLp0kBmOGFJ6N2UYg7coGid1gdxb4co62dy/xISDMaYBXBVXEDhfgMk7qkbcYiGtwd5Q/hwDDQ==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1518,13 +1452,17 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", - "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1533,17 +1471,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz", - "integrity": "sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==", + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.21.0" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1552,29 +1488,31 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", - "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", - "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1583,14 +1521,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1599,13 +1537,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1614,18 +1553,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz", - "integrity": "sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==", + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-plugin-utils": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1634,22 +1571,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1658,14 +1588,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", - "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1674,13 +1604,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1689,13 +1621,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1704,13 +1637,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1719,16 +1654,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz", - "integrity": "sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==", + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-typescript": "^7.20.0" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1737,13 +1672,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1752,14 +1688,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz", + "integrity": "sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1768,87 +1704,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz", - "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==", + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", + "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7", - "@babel/plugin-proposal-async-generator-functions": "^7.20.7", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.21.0", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.21.0", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.21.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.20.7", - "@babel/plugin-transform-async-to-generator": "^7.20.7", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.21.0", - "@babel/plugin-transform-classes": "^7.21.0", - "@babel/plugin-transform-computed-properties": "^7.20.7", - "@babel/plugin-transform-destructuring": "^7.21.3", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.21.0", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.20.11", - "@babel/plugin-transform-modules-commonjs": "^7.21.2", - "@babel/plugin-transform-modules-systemjs": "^7.20.11", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.21.3", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.20.5", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.20.7", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.21.4", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1857,43 +1720,34 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", + "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-react": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", - "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", + "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-react-display-name": "^7.18.6", - "@babel/plugin-transform-react-jsx": "^7.18.6", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + "@babel/plugin-transform-react-jsx": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1902,17 +1756,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-typescript": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.4.tgz", - "integrity": "sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==", + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", + "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-syntax-jsx": "^7.21.4", - "@babel/plugin-transform-modules-commonjs": "^7.21.2", - "@babel/plugin-transform-typescript": "^7.21.3" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1921,464 +1773,545 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, - "node_modules/@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz", + "integrity": "sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==", "dev": true, + "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.13.11" + "@babel/helper-plugin-utils": "^7.26.5", + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", - "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.4", - "@babel/types": "^7.21.4", - "debug": "^4.1.0", - "globals": "^11.1.0" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/types": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", - "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@csstools/normalize.css": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", - "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==", - "dev": true - }, - "node_modules/@csstools/postcss-cascade-layers": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", - "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", - "dev": true, - "dependencies": { - "@csstools/selector-specificity": "^2.0.2", - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-color-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", + "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", "dev": true, + "license": "MIT", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-font-format-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-hwb-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "node_modules/@babel/plugin-transform-spread": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-ic-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dev": true, + "license": "MIT", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", "dev": true, + "license": "MIT", "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-nested-calc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz", + "integrity": "sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-normalize-display-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz", + "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.27.0", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-oklab-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dev": true, + "license": "MIT", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "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==", + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.3" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-stepped-value-functions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0" } }, - "node_modules/@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", - "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", - "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" + "node_modules/@babel/preset-env": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.8", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.26.8", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.26.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.26.8", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.40.0", + "semver": "^6.3.1" }, "engines": { - "node": "^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": ">=6.9.0" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/postcss-unset-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" }, "peerDependencies": { - "postcss": "^8.2" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "node_modules/@babel/preset-react": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz", + "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==", "dev": true, - "engines": { - "node": "^14 || ^16 || >=18" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-transform-react-display-name": "^7.25.9", + "@babel/plugin-transform-react-jsx": "^7.25.9", + "@babel/plugin-transform-react-jsx-development": "^7.25.9", + "@babel/plugin-transform-react-pure-annotations": "^7.25.9" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "postcss-selector-parser": "^6.0.10" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/@babel/preset-typescript": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz", + "integrity": "sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-typescript": "^7.27.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6.9.0" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", + "node_modules/@babel/runtime": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "node_modules/@babel/template": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "dev": true, + "license": "MIT", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=6.9.0" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" + "node_modules/@babel/traverse": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "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==", + "node_modules/@babel/types": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=6.9.0" } }, - "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==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, "engines": { - "node": ">=10" + "node": ">=0.1.95" + } + }, + "node_modules/@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", + "dev": true, + "license": "CC0-1.0", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@csstools/normalize.css": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", + "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/js": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", - "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "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": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@fluentui/react-component-event-listener": { @@ -2386,6 +2319,7 @@ "resolved": "https://registry.npmjs.org/@fluentui/react-component-event-listener/-/react-component-event-listener-0.63.1.tgz", "integrity": "sha512-gSMdOh6tI3IJKZFqxfQwbTpskpME0CvxdxGM2tdglmf6ZPVDi0L4+KKIm+2dN8nzb8Ya1A8ZT+Ddq0KmZtwVQg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.4" }, @@ -2399,6 +2333,7 @@ "resolved": "https://registry.npmjs.org/@fluentui/react-component-ref/-/react-component-ref-0.63.1.tgz", "integrity": "sha512-8MkXX4+R3i80msdbD4rFpEB4WWq2UDvGwG386g3ckIWbekdvN9z2kWAd9OXhRGqB7QeOsoAGWocp6gAMCivRlw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.4", "react-is": "^16.6.3" @@ -2408,117 +2343,111 @@ "react-dom": "^16.8.0 || ^17 || ^18" } }, - "node_modules/@fluentui/react-component-ref/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true, + "license": "MIT" }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "node_modules/@gulpjs/to-absolute-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@gulpjs/to-absolute-glob/-/to-absolute-glob-4.0.0.tgz", + "integrity": "sha512-kjotm7XJrJ6v+7knhPaRgaT6q8F8K2jiafwYdNHLzmV0uGLuZY43FK6smNSHUPrhq5kX2slCUy+RGG/xGqmIKA==", "dev": true, + "license": "MIT", "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "is-negated-glob": "^1.0.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=10.13.0" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "deprecated": "Moved to 'npm install @sideway/address'", "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } + "license": "BSD-3-Clause" }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "BSD-3-Clause" }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", "dev": true, - "engines": { - "node": ">=6" - } + "license": "BSD-3-Clause" }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "deprecated": "Switch to 'npm install joi'", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "deprecated": "This version has been deprecated and is no longer supported or maintained", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@hapi/hoek": "^8.3.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { - "p-try": "^2.0.0" + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.10.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "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": { - "p-limit": "^2.2.0" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { "node": ">=8" @@ -2529,6 +2458,7 @@ "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" } @@ -2538,6 +2468,7 @@ "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*", @@ -2550,19 +2481,31 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@jest/console/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" } }, "node_modules/@jest/console/node_modules/chalk": { @@ -2570,6 +2513,7 @@ "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" @@ -2581,38 +2525,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/console/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/console/node_modules/jest-message-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.5.1", @@ -2628,16 +2546,22 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@jest/console/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/core": { @@ -2645,6 +2569,7 @@ "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^27.5.1", "@jest/reporters": "^27.5.1", @@ -2692,6 +2617,7 @@ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.1.0", "@jest/types": "^27.5.1", @@ -2713,19 +2639,31 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@jest/core/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/core/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" } }, "node_modules/@jest/core/node_modules/chalk": { @@ -2733,6 +2671,7 @@ "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" @@ -2744,31 +2683,38 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@jest/core/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "license": "MIT" }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@jest/core/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, "node_modules/@jest/core/node_modules/jest-message-util": { @@ -2776,6 +2722,7 @@ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.5.1", @@ -2791,25 +2738,32 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/core/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==", + "node_modules/@jest/core/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@jest/core/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/core/node_modules/write-file-atomic": { @@ -2817,6 +2771,7 @@ "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", @@ -2829,6 +2784,7 @@ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/fake-timers": "^27.5.1", "@jest/types": "^27.5.1", @@ -2839,23 +2795,59 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "node_modules/@jest/environment/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "jest-get-type": "^29.4.3" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/environment/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/environment/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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/expect-utils/node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -2865,6 +2857,7 @@ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@sinonjs/fake-timers": "^8.0.1", @@ -2877,19 +2870,31 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/fake-timers/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==", + "node_modules/@jest/fake-timers/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/fake-timers/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" } }, "node_modules/@jest/fake-timers/node_modules/chalk": { @@ -2897,6 +2902,7 @@ "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" @@ -2908,38 +2914,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/fake-timers/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/fake-timers/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/fake-timers/node_modules/jest-message-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.5.1", @@ -2955,16 +2935,22 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/fake-timers/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==", + "node_modules/@jest/fake-timers/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/globals": { @@ -2972,6 +2958,7 @@ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", "@jest/types": "^27.5.1", @@ -2981,19 +2968,31 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/globals/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==", + "node_modules/@jest/globals/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/globals/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" } }, "node_modules/@jest/globals/node_modules/chalk": { @@ -3001,6 +3000,7 @@ "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" @@ -3012,29 +3012,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/globals/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/globals/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/@jest/globals/node_modules/diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true, + "license": "MIT", "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } @@ -3044,6 +3027,7 @@ "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "jest-get-type": "^27.5.1", @@ -3054,20 +3038,12 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/globals/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/globals/node_modules/jest-diff": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^27.5.1", @@ -3078,11 +3054,22 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/@jest/globals/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/@jest/globals/node_modules/jest-matcher-utils": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "jest-diff": "^27.5.1", @@ -3098,6 +3085,7 @@ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.5.1", @@ -3113,23 +3101,12 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/globals/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/reporters": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", "dev": true, + "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^27.5.1", @@ -3174,6 +3151,7 @@ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.1.0", "@jest/types": "^27.5.1", @@ -3195,19 +3173,31 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@jest/reporters/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" } }, "node_modules/@jest/reporters/node_modules/chalk": { @@ -3215,6 +3205,7 @@ "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" @@ -3226,52 +3217,66 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@jest/reporters/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/reporters/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/@jest/reporters/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==", + "node_modules/@jest/reporters/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@jest/reporters/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/reporters/node_modules/write-file-atomic": { @@ -3279,6 +3284,7 @@ "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", @@ -3287,12 +3293,13 @@ } }, "node_modules/@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, + "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.25.16" + "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -3303,6 +3310,7 @@ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0", "graceful-fs": "^4.2.9", @@ -3312,20 +3320,12 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@jest/test-result": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^27.5.1", "@jest/types": "^27.5.1", @@ -3336,93 +3336,99 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/test-sequencer": { + "node_modules/@jest/test-result/node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", + "node_modules/@jest/test-result/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/test-result/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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/transform/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "node_modules/@jest/test-sequencer/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.4.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^17.0.8", + "@types/yargs": "^16.0.0", "chalk": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/transform/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "node_modules/@jest/test-sequencer/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { + "node_modules/@jest/test-sequencer/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" @@ -3434,80 +3440,51 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/transform/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", + "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", "micromatch": "^4.0.4", - "walker": "^1.0.8" + "walker": "^1.0.7" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, "optionalDependencies": { "fsevents": "^2.3.2" } }, - "node_modules/@jest/transform/node_modules/jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/transform/node_modules/jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "node_modules/@jest/test-sequencer/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -3515,80 +3492,69 @@ "picomatch": "^2.2.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@jest/transform/node_modules/jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/transform/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==", + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, + "license": "MIT", "dependencies": { + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/types/node_modules/chalk": { @@ -3596,6 +3562,7 @@ "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" @@ -3607,144 +3574,68 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/types/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==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.0.0" } }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/types/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==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" + "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", - "dev": true - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true, - "dependencies": { - "eslint-scope": "5.1.1" - } + "license": "MIT" }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/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==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@nodelib/fs.scandir": { @@ -3752,6 +3643,7 @@ "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" @@ -3765,6 +3657,7 @@ "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" } @@ -3774,6 +3667,7 @@ "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" @@ -3782,104 +3676,160 @@ "node": ">= 8" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz", - "integrity": "sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==", + "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": { - "ansi-html-community": "^0.0.8", - "common-path-prefix": "^3.0.0", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "find-up": "^5.0.0", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^3.0.0", - "source-map": "^0.7.3" + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 10.13" + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" }, - "peerDependencies": { - "@types/webpack": "4.x || 5.x", - "react-refresh": ">=0.10.0 <1.0.0", - "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <4.0.0", - "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x", - "webpack-hot-middleware": "2.x", - "webpack-plugin-serve": "0.x || 1.x" + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/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" }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - }, - "sockjs-client": { - "optional": true - }, - "type-fest": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - }, - "webpack-hot-middleware": { - "optional": true - }, - "webpack-plugin-serve": { - "optional": true - } + "engines": { + "node": ">=10" } }, "node_modules/@popperjs/core": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz", - "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==", + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" } }, - "node_modules/@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "node_modules/@postalsys/gettext": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@postalsys/gettext/-/gettext-4.0.1.tgz", + "integrity": "sha512-QERj2sCJTZJN4scplV9BUpZObUsB/ZAF+/MD3OBxDkqTWEmK/C0HX1i15IRJ0YpYtl3hovc4mEN37HIGvb4pbw==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" - }, - "engines": { - "node": ">= 10.0.0" + "lodash.get": "4.4.2" + } + }, + "node_modules/@react-dnd/asap": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-4.0.1.tgz", + "integrity": "sha512-kLy0PJDDwvwwTXxqTFNAAllPHD73AycE9ypWeln/IguoGBEbvFcPDbCV03G52bEcC5E+YgupBE0VzHGdC8SIXg==", + "dev": true + }, + "node_modules/@react-dnd/invariant": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-2.0.0.tgz", + "integrity": "sha512-xL4RCQBCBDJ+GRwKTFhGUW8GXa4yoDfJrPbLblc3U09ciS+9ZJXJ3Qrcs/x2IODOdIE5kQxvMmE2UKyqUictUw==", + "dev": true + }, + "node_modules/@react-dnd/shallowequal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz", + "integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==", + "dev": true + }, + "node_modules/@reduxjs/toolkit": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.6.1.tgz", + "integrity": "sha512-SSlIqZNYhqm/oMkXbtofwZSt9lrncblzo6YcZ9zoX+zLngRBrCOjK4lNLdkNucJF58RHOWrD9txT3bT3piH7Zw==", + "dev": true, + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "@types/babel__core": "^7.1.9", - "rollup": "^1.20.0||^2.0.0" + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" }, "peerDependenciesMeta": { - "@types/babel__core": { + "react": { + "optional": true + }, + "react-redux": { "optional": true } } }, + "node_modules/@reduxjs/toolkit/node_modules/immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/@reduxjs/toolkit/node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "dev": true + }, + "node_modules/@reduxjs/toolkit/node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "dev": true, + "peerDependencies": { + "redux": "^5.0.0" + } + }, "node_modules/@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-7.1.3.tgz", + "integrity": "sha512-RxtSL3XmdTAE2byxekYLnx+98kEUOrPHF/KRVjLH+DEIHy6kjIw7YINQzn+NXiH/NTrQLAwYs0GWB+csWygA9Q==", "dev": true, + "license": "MIT", "dependencies": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", + "@rollup/pluginutils": "^3.0.8", + "@types/resolve": "0.0.8", "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", "is-module": "^1.0.0", - "resolve": "^1.19.0" + "resolve": "^1.14.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">= 8.0.0" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0" @@ -3890,6 +3840,7 @@ "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^3.1.0", "magic-string": "^0.25.7" @@ -3903,6 +3854,7 @@ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "0.0.39", "estree-walker": "^1.0.1", @@ -3919,19 +3871,40 @@ "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", - "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==", - "dev": true + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@semantic-ui-react/css-patch": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@semantic-ui-react/css-patch/-/css-patch-1.1.3.tgz", + "integrity": "sha512-26qZstEbx1Zqp+wfYDPAzHPibBs5hdgPulvhvUVrv0nwm6zp8I8sEyJAnDGy8oNefwdVO+5ll2M01mdmnPKGYQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "chalk": "^3.0.0", + "log-symbols": "^3.0.0" + }, + "bin": { + "semantic-ui-css-patch": "dist-node/index.bin.js" + }, + "engines": { + "node": ">=8.0.0" + } }, "node_modules/@semantic-ui-react/event-stack": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@semantic-ui-react/event-stack/-/event-stack-3.1.3.tgz", "integrity": "sha512-FdTmJyWvJaYinHrKRsMLDrz4tTMGdFfds299Qory53hBugiDvGC0tEJf+cHsi5igDwWb/CLOgOiChInHwq8URQ==", "dev": true, + "license": "MIT", "dependencies": { "exenv": "^1.2.2", "prop-types": "^15.6.2" @@ -3942,16 +3915,18 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", - "dev": true + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" }, "node_modules/@sinonjs/commons": { "version": "1.8.6", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } @@ -3961,20 +3936,20 @@ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.7.0" } }, "node_modules/@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz", + "integrity": "sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" + "ejs": "^2.6.1", + "magic-string": "^0.25.0" } }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { @@ -3982,6 +3957,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3995,6 +3971,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4008,6 +3985,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4021,6 +3999,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4034,6 +4013,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4047,6 +4027,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4060,6 +4041,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4073,6 +4055,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4086,6 +4069,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", "dev": true, + "license": "MIT", "dependencies": { "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", @@ -4109,6 +4093,7 @@ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", "dev": true, + "license": "MIT", "dependencies": { "@svgr/plugin-jsx": "^5.5.0", "camelcase": "^6.2.0", @@ -4122,11 +4107,25 @@ "url": "https://github.com/sponsors/gregberge" } }, + "node_modules/@svgr/core/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", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@svgr/hast-util-to-babel-ast": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.12.6" }, @@ -4143,6 +4142,7 @@ "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.12.3", "@svgr/babel-preset": "^5.5.0", @@ -4162,6 +4162,7 @@ "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", "dev": true, + "license": "MIT", "dependencies": { "cosmiconfig": "^7.0.0", "deepmerge": "^4.2.2", @@ -4175,11 +4176,22 @@ "url": "https://github.com/sponsors/gregberge" } }, + "node_modules/@svgr/plugin-svgo/node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@svgr/webpack": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.12.3", "@babel/plugin-transform-react-constant-elements": "^7.12.1", @@ -4199,37 +4211,33 @@ } }, "node_modules/@testing-library/dom": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.2.0.tgz", - "integrity": "sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==", + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "^5.0.0", + "aria-query": "5.1.3", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "pretty-format": "^27.0.2" }, "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@testing-library/dom/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==", + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "deep-equal": "^2.0.5" } }, "node_modules/@testing-library/dom/node_modules/chalk": { @@ -4237,6 +4245,7 @@ "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" @@ -4248,50 +4257,45 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@testing-library/dom/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==", + "node_modules/@testing-library/dom/node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@testing-library/dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@testing-library/dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom": { - "version": "5.16.5", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz", - "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==", + "node_modules/@testing-library/jest-dom": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", "dev": true, + "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.0.1", "@babel/runtime": "^7.9.2", @@ -4309,89 +4313,39 @@ "yarn": ">=1" } }, - "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/jest-dom/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, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom/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==", + "node_modules/@testing-library/react": { + "version": "12.1.5", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-12.1.5.tgz", + "integrity": "sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@babel/runtime": "^7.12.5", + "@testing-library/dom": "^8.0.0", + "@types/react-dom": "<18.0.0" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@testing-library/jest-dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "node": ">=12" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "react": "<18.0.0", + "react-dom": "<18.0.0" } }, - "node_modules/@testing-library/react": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz", - "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==", + "node_modules/@tinymce/tinymce-react": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@tinymce/tinymce-react/-/tinymce-react-4.3.2.tgz", + "integrity": "sha512-wJHZhPf2Mk3yTtdVC/uIGh+kvDgKuTw/qV13uzdChTNo68JI1l7jYMrSQOpyimDyn5LHAw0E1zFByrm1WHAVeA==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^9.0.0", - "@types/react-dom": "^18.0.0" - }, - "engines": { - "node": ">=14" + "prop-types": "^15.6.2", + "tinymce": "^6.0.0 || ^5.5.1" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^17.0.1 || ^16.7.0", + "react-dom": "^18.0.0 || ^17.0.1 || ^16.7.0" } }, "node_modules/@tootallnate/once": { @@ -4399,30 +4353,24 @@ "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/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/@types/aria-query": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", - "integrity": "sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==", - "dev": true + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -4432,198 +4380,137 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__traverse": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.4.tgz", - "integrity": "sha512-TLG7CsGZZmX9aDF78UuJxnNTfQyRUFU0OYIVyIblr0/wd/HvsIo8wmuB90CszeD2MtLLAE9Tt4cWvk+KVkyGIw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", - "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", "dev": true, + "license": "MIT", "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "@babel/types": "^7.20.7" } }, "node_modules/@types/eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==", + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } + "license": "MIT" }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.34", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", - "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "@types/minimatch": "*", + "@types/node": "*" } }, "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, - "node_modules/@types/http-proxy": { - "version": "1.17.11", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", - "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz", + "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" } }, + "node_modules/@types/html-minifier-terser": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", + "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { - "version": "29.5.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz", - "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==", + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, + "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" } }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@types/jest/node_modules/pretty-format/node_modules/ansi-styles": { + "node_modules/@types/jest/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4631,229 +4518,275 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@types/jest/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true + "node_modules/@types/lodash": { + "version": "4.17.16", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz", + "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "18.16.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.1.tgz", - "integrity": "sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==", - "dev": true + "version": "22.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", + "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz", + "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.0.tgz", - "integrity": "sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==", + "version": "17.0.85", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.85.tgz", + "integrity": "sha512-5oBDUsRDsrYq4DdyHaL99gE1AJCfuDhyxqF6/55fvvOIRkp1PpKuwJ+aMiGJR+GJt7YqMNclPROTHF20vY2cXA==", "dev": true, + "license": "MIT", "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", + "@types/scheduler": "^0.16", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.1.tgz", - "integrity": "sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==", + "version": "17.0.26", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.26.tgz", + "integrity": "sha512-Z+2VcYXJwOqQ79HreLU/1fyQ88eXSSFh6I3JdrEHQIfYSI0kCQpTGvOrbE6jFGGYXKsHuwY9tBa/w5Uo6KzrEg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^17.0.0" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.34", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.34.tgz", + "integrity": "sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/react": "*" + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" } }, "node_modules/@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "dev": true, + "license": "MIT" }, - "node_modules/@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true + "node_modules/@types/source-list-map": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.6.tgz", + "integrity": "sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==", + "dev": true, + "license": "MIT" }, - "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } + "license": "MIT" }, - "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==", + "node_modules/@types/tapable": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.12.tgz", + "integrity": "sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/express": "*" + "@types/jest": "*" } }, - "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "node_modules/@types/uglify-js": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.5.tgz", + "integrity": "sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/mime": "*", - "@types/node": "*" + "source-map": "^0.6.1" } }, - "node_modules/@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "node_modules/@types/webpack": { + "version": "4.41.40", + "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.40.tgz", + "integrity": "sha512-u6kMFSBM9HcoTpUXnL6mt2HSzftqb3JgYV6oxIgL2dl6sX6aCa5k6SOkzv5DuZjBTPUE/dJltKtwwuqrkZHpfw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*" + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" } }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/testing-library__jest-dom": { - "version": "5.14.5", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz", - "integrity": "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==", + "node_modules/@types/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/jest": "*" + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" } }, - "node_modules/@types/trusted-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", - "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==", - "dev": true - }, - "node_modules/@types/ws": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", - "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", + "node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, - "dependencies": { - "@types/node": "*" + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" } }, "node_modules/@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz", - "integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/type-utils": "5.59.1", - "@typescript-eslint/utils": "5.59.1", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", "tsutils": "^3.21.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^10.12.0 || >=12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -4861,45 +4794,65 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.59.1.tgz", - "integrity": "sha512-KVtKcHEizCIRx//LC9tBi6xp94ULKbU5StVHBVWURJQOVa2qw6HP28Hu7LmHrQM3p9I3q5Y2VR4wKllCJ3IWrw==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", + "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "5.59.1" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^10.12.0 || >=12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "*" } }, "node_modules/@typescript-eslint/parser": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz", - "integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/typescript-estree": "5.59.1", - "debug": "^4.3.4" + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^10.12.0 || >=12.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -4908,56 +4861,31 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz", - "integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/visitor-keys": "5.59.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/type-utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz", - "integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", + "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "5.59.1", - "@typescript-eslint/utils": "5.59.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, "node_modules/@typescript-eslint/types": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz", - "integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", + "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" }, "funding": { "type": "opencollective", @@ -4965,21 +4893,22 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz", - "integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", + "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/visitor-keys": "5.59.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", "tsutils": "^3.21.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^10.12.0 || >=12.0.0" }, "funding": { "type": "opencollective", @@ -4991,65 +4920,31 @@ } } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz", - "integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/typescript-estree": "5.59.1", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" + "node": ">=10" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz", - "integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", + "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.59.1", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" }, "funding": { "type": "opencollective", @@ -5057,148 +4952,195 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", - "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", - "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", - "dev": true + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", - "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", - "dev": true + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", - "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", - "dev": true + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true, + "license": "MIT" }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", - "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@xtuc/long": "4.2.2" + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true, + "license": "ISC" + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", - "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", - "dev": true + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", - "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", - "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", - "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", - "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", - "dev": true + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", - "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/helper-wasm-section": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-opt": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5", - "@webassemblyjs/wast-printer": "1.11.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", - "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", - "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", - "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", - "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, @@ -5206,25 +5148,43 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } }, "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" @@ -5233,11 +5193,22 @@ "node": ">= 0.6" } }, + "node_modules/accepts/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/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -5245,11 +5216,28 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-class-fields": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/acorn-class-fields/-/acorn-class-fields-0.3.7.tgz", + "integrity": "sha512-jdUWSFce0fuADUljmExz4TWpPkxmRW/ZCPRqeeUzbGf0vFUcpQYbyq52l75qGd0oSwwtAepeL6hgb/naRgvcKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-private-class-elements": "^0.2.7" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^6 || ^7 || ^8" + } + }, "node_modules/acorn-globals": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" @@ -5260,6 +5248,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -5267,47 +5256,105 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-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/acorn-private-class-elements": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/acorn-private-class-elements/-/acorn-private-class-elements-0.2.7.tgz", + "integrity": "sha512-+GZH2wOKNZOBI4OOPmzpo4cs6mW297sn6fgIk1dUI08jGjhAaEwvC39mN2gJAg2lmAQJ1rBkFqKWonL3Zz6PVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^6.1.0 || ^7 || ^8" + } + }, + "node_modules/acorn-private-methods": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/acorn-private-methods/-/acorn-private-methods-0.3.3.tgz", + "integrity": "sha512-46oeEol3YFvLSah5m9hGMlNpxDBCEkdceJgf01AjqKYTK9r6HexKs2rgSbLK81pYjZZMonhftuUReGMlbbv05w==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-private-class-elements": "^0.2.7" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^6 || ^7 || ^8" + } + }, + "node_modules/acorn-stage3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-stage3/-/acorn-stage3-4.0.0.tgz", + "integrity": "sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-class-fields": "^0.3.7", + "acorn-private-methods": "^0.3.3", + "acorn-static-class-features": "^0.2.4" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^7.4 || ^8" + } + }, + "node_modules/acorn-static-class-features": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/acorn-static-class-features/-/acorn-static-class-features-0.2.4.tgz", + "integrity": "sha512-5X4mpYq5J3pdndLmIB0+WtFd/mKWnNYpuTlTzj32wUu/PMmEGOiayQ5UrqgwdBNiaZBtDDh5kddpP7Yg2QaQYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-private-class-elements": "^0.2.7" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^6.1.0 || ^7 || ^8" + } + }, "node_modules/acorn-walk": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/address": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", - "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 10.0.0" + "node": ">= 0.12.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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", + "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "regex-parser": "^2.2.11" @@ -5321,6 +5368,7 @@ "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" }, @@ -5328,11 +5376,26 @@ "node": ">= 6.0.0" } }, + "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" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5344,59 +5407,49 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, + "license": "MIT", "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "ajv": ">=5.0.0" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "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" }, @@ -5407,14 +5460,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "node_modules/ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==", "dev": true, "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -5424,33 +5478,33 @@ "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/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==", + "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": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -5459,40 +5513,84 @@ "node": ">= 8" } }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "node_modules/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true, + "license": "ISC" }, "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/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, - "dependencies": { - "deep-equal": "^2.0.5" + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "node_modules/arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { + "license": "MIT" + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { "url": "https://github.com/sponsors/ljharb" } }, @@ -5500,18 +5598,21 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -5526,20 +5627,85 @@ "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/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5549,15 +5715,16 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5567,16 +5734,20 @@ } }, "node_modules/array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.8.tgz", + "integrity": "sha512-DwuEqgXFBwbmZSRqt3BpQigWNUoqw9Ml2dTWdF3B2zQlQX4OeUE0zyuzX0fX0IbTvjdkZbcBTU3idgpO78qkTw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "is-string": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -5586,89 +5757,250 @@ } }, "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/assert": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", + "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "object.assign": "^4.1.4", + "util": "^0.10.4" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/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 + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true, + "license": "MIT" + }, + "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", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true, + "license": "MIT" }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "dev": true, + "license": "MIT" }, "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" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/attr-accept": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz", + "integrity": "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/autoprefixer": { - "version": "10.4.14", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", - "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - ], + "license": "MIT", "dependencies": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, + "node_modules/autoprefixer/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true, + "license": "ISC" + }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -5677,149 +6009,193 @@ } }, "node_modules/axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", "dev": true, + "license": "MPL-2.0", "engines": { "node": ">=4" } }, - "node_modules/axobject-query": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", - "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "node_modules/axios": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "deep-equal": "^2.0.5" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", + "node_modules/axios/node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "node": ">= 6" } }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "Apache-2.0", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "eslint": ">= 4.12.1" } }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, + "license": "Apache-2.0", "engines": { - "node": ">=7.0.0" + "node": ">=4" } }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/babel-extract-comments": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", + "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "babylon": "^6.18.0" + }, + "engines": { + "node": ">=4" + } }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", "dev": true, + "license": "MIT", "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", "schema-utils": "^2.6.5" }, "engines": { - "node": ">= 8.9" + "node": ">= 6.9" }, "peerDependencies": { "@babel/core": "^7.0.0", "webpack": ">=2" } }, - "node_modules/babel-loader/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==", + "node_modules/babel-loader/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "minimist": "^1.2.0" }, - "engines": { - "node": ">= 8.9.0" + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/babel-loader/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "engines": { + "node": ">=4.0.0" } }, "node_modules/babel-plugin-istanbul": { @@ -5827,6 +6203,7 @@ "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", @@ -5839,10 +6216,11 @@ } }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -5858,6 +6236,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", @@ -5873,94 +6252,113 @@ "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", "dev": true, + "license": "MIT", "peerDependencies": { "@babel/core": "^7.1.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", + "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.4", + "semver": "^6.3.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", + "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.6.4" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" } }, "node_modules/babel-plugin-transform-react-remove-prop-types": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.5.0", + "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -5971,10 +6369,11 @@ } }, "node_modules/babel-preset-react-app": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", - "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.1.0.tgz", + "integrity": "sha512-f9B1xMdnkCIqe+2dHrJsoQFRz7reChaAHE/65SdaykPklQqhme2WaC08oD3is77x9ff98/9EazAKFDZv5rFEQg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.16.0", "@babel/plugin-proposal-class-properties": "^7.16.0", @@ -5983,6 +6382,7 @@ "@babel/plugin-proposal-numeric-separator": "^7.16.0", "@babel/plugin-proposal-optional-chaining": "^7.16.0", "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", "@babel/plugin-transform-flow-strip-types": "^7.16.0", "@babel/plugin-transform-react-display-name": "^7.16.0", "@babel/plugin-transform-runtime": "^7.16.4", @@ -5994,27 +6394,149 @@ "babel-plugin-transform-react-remove-prop-types": "^0.4.24" } }, + "node_modules/babel-preset-react-app/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true, + "license": "MIT", + "bin": { + "babylon": "bin/babylon.js" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", + "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bfj": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz", - "integrity": "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", + "integrity": "sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==", "dev": true, + "license": "MIT", "dependencies": { - "bluebird": "^3.5.5", - "check-types": "^11.1.1", + "bluebird": "^3.7.2", + "check-types": "^11.2.3", "hoopy": "^0.1.4", + "jsonpath": "^1.1.1", "tryer": "^1.0.1" }, "engines": { @@ -6026,41 +6548,119 @@ "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==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, + "license": "MIT", + "optional": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true, + "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", + "qs": "6.13.0", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -6069,92 +6669,190 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, + "license": "MIT" + }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "side-channel": "^1.0.6" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/bonjour-service": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", - "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", "dev": true, + "license": "MIT", "dependencies": { - "array-flatten": "^2.1.2", + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" } }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "dev": true, + "license": "ISC" }, "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/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true, + "license": "MIT" + }, "node_modules/browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "dev": true, + "license": "ISC", + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "~1.0.5" + } }, "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { @@ -6164,13 +6862,18 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -6184,21 +6887,57 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -6206,33 +6945,199 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bytes": { + "node_modules/builtin-status-codes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true, + "license": "MIT" + }, + "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": "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", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cacache/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" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/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" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6242,30 +7147,20 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, + "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" } }, "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=6" } }, "node_modules/caniuse-api": { @@ -6273,6 +7168,7 @@ "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, + "license": "MIT", "dependencies": { "browserslist": "^4.0.0", "caniuse-lite": "^1.0.0", @@ -6281,9 +7177,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001481", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz", - "integrity": "sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==", + "version": "1.0.30001712", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001712.tgz", + "integrity": "sha512-MBqPpGYYdQ7/hfKiet9SCI+nmN5/hp4ZzveOJubl5DTAMa5oggjAuoi0Z4onBpKPFI2ePGnQuQIzF3VxDjDJig==", "dev": true, "funding": [ { @@ -6298,29 +7194,44 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" + }, + "node_modules/capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "license": "ISC", + "dependencies": { + "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, "node_modules/case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", - "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "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==", + "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": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/char-regex": { @@ -6328,27 +7239,25 @@ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/check-types": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz", - "integrity": "sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA==", - "dev": true + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", + "integrity": "sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==", + "dev": true, + "license": "MIT" }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "license": "MIT", + "optional": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -6361,35 +7270,37 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } }, - "node_modules/chokidar/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==", + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, + "license": "ISC", "engines": { - "node": ">= 6" + "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==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -6397,53 +7308,148 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "node_modules/clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "node_modules/cipher-base": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", "dev": true, + "license": "MIT", "dependencies": { - "source-map": "~0.6.0" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" }, "engines": { - "node": ">= 10.0" + "node": ">= 0.10" } }, - "node_modules/clean-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==", + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "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", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6453,6 +7459,7 @@ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, + "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -6463,6 +7470,7 @@ "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", "dev": true, + "license": "MIT", "dependencies": { "@types/q": "^1.5.1", "chalk": "^2.4.1", @@ -6472,44 +7480,177 @@ "node": ">= 4.0" } }, + "node_modules/coa/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/coa/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/coa/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/coa/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/coa/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } }, "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, - "node_modules/color-name": { + "node_modules/color/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true + "dev": true, + "license": "MIT" }, "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" }, @@ -6518,25 +7659,21 @@ } }, "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 12" + "node": ">= 6" } }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, "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" } @@ -6545,13 +7682,35 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "arity-n": "^1.0.4" + } }, "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" }, @@ -6560,17 +7719,18 @@ } }, "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.0.tgz", + "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", "dev": true, + "license": "MIT", "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", + "bytes": "3.1.2", + "compressible": "~2.0.18", "debug": "2.6.9", + "negotiator": "~0.6.4", "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", + "safe-buffer": "5.2.1", "vary": "~1.1.2" }, "engines": { @@ -6582,6 +7742,7 @@ "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" } @@ -6590,40 +7751,68 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } }, "node_modules/confusing-browser-globals": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "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/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true, + "license": "MIT" + }, "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" }, @@ -6636,21 +7825,24 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6659,38 +7851,70 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/core-js": { - "version": "3.30.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.1.tgz", - "integrity": "sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ==", + "node_modules/copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "deprecated": "This package is no longer supported.", "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" } }, - "node_modules/core-js-compat": { - "version": "3.30.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.1.tgz", - "integrity": "sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw==", + "node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { - "browserslist": "^4.21.5" + "glob": "^7.1.3" }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js": { + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.41.0.tgz", + "integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, - "node_modules/core-js-pure": { - "version": "3.30.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.1.tgz", - "integrity": "sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg==", + "node_modules/core-js-compat": { + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", "dev": true, - "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -6700,13 +7924,15 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -6718,11 +7944,59 @@ "node": ">=10" } }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -6732,202 +8006,212 @@ "node": ">= 8" } }, + "node_modules/crypto-browserify": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", + "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserify-cipher": "^1.0.1", + "browserify-sign": "^4.2.3", + "create-ecdh": "^4.0.4", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "diffie-hellman": "^5.0.3", + "hash-base": "~3.0.4", + "inherits": "^2.0.4", + "pbkdf2": "^3.1.2", + "public-encrypt": "^4.0.3", + "randombytes": "^2.1.0", + "randomfill": "^1.0.4" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" + } + }, + "node_modules/css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" } }, "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==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "postcss-selector-parser": "^6.0.9" + "postcss": "^7.0.5" }, "bin": { - "css-blank-pseudo": "dist/cli.cjs" + "css-blank-pseudo": "cli.js" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=6.0.0" } }, - "node_modules/css-declaration-sorter": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz", - "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==", + "node_modules/css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", "dev": true, + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14" + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" }, - "peerDependencies": { - "postcss": "^8.0.9" + "engines": { + "node": ">4" } }, "node_modules/css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", + "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "postcss-selector-parser": "^6.0.9" + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" }, "bin": { - "css-has-pseudo": "dist/cli.cjs" + "css-has-pseudo": "cli.js" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=6.0.0" } }, - "node_modules/css-loader": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", - "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", + "node_modules/css-has-pseudo/node_modules/cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.19", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "node": ">=4" } }, - "node_modules/css-minimizer-webpack-plugin": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", - "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "node_modules/css-has-pseudo/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, + "license": "MIT", "dependencies": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "postcss": "^8.3.5", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@parcel/css": { - "optional": true - }, - "clean-css": { - "optional": true - }, - "csso": { - "optional": true - }, - "esbuild": { - "optional": true - } + "node": ">=4" } }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/css-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-4.3.0.tgz", + "integrity": "sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "camelcase": "^6.0.0", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^2.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.3", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.1", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.13.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "ajv": "^8.8.2" + "webpack": "^4.27.0 || ^5.0.0" } }, - "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "node_modules/css-loader/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, + "license": "MIT", "engines": { - "node": ">= 12.13.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css-minimizer-webpack-plugin/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==", + "node_modules/css-loader/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, "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==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", + "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.5" + }, "bin": { - "css-prefers-color-scheme": "dist/cli.cjs" + "css-prefers-color-scheme": "cli.js" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=6.0.0" } }, "node_modules/css-select": { @@ -6935,6 +8219,7 @@ "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", @@ -6950,13 +8235,15 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.4", "source-map": "^0.6.1" @@ -6965,20 +8252,12 @@ "node": ">=8.0.0" } }, - "node_modules/css-tree/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/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" }, @@ -6990,23 +8269,22 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cssdb": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.5.4.tgz", - "integrity": "sha512-fGD+J6Jlq+aurfE1VDXlLS4Pt0VtNlu2+YgfGOdMxRyl/HQ9bDiHTwSck1Yz8A97Dt/82izSK6Bp/4nVqacOsg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", + "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } + "license": "CC0-1.0" }, "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" }, @@ -7015,79 +8293,158 @@ } }, "node_modules/cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.11.tgz", + "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==", "dev": true, + "license": "MIT", "dependencies": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.8", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" }, - "peerDependencies": { - "postcss": "^8.2.15" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", - "dev": true, - "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.4", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.2", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" + "node_modules/cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" }, - "peerDependencies": { - "postcss": "^8.2.15" + "engines": { + "node": ">=4" } }, - "node_modules/cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "node_modules/cssnano/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", "dev": true, + "license": "MIT", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, - "peerDependencies": { - "postcss": "^8.2.15" + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, "node_modules/csso": { @@ -7095,6 +8452,7 @@ "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", "dev": true, + "license": "MIT", "dependencies": { "css-tree": "^1.1.2" }, @@ -7107,6 +8465,7 @@ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", "dev": true, + "license": "MIT", "dependencies": { "mdn-data": "2.0.14", "source-map": "^0.6.1" @@ -7119,28 +8478,22 @@ "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/csso/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "CC0-1.0" }, "node_modules/cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cssstyle": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, + "license": "MIT", "dependencies": { "cssom": "~0.3.6" }, @@ -7152,25 +8505,50 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cyclist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz", + "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } }, "node_modules/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 + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", @@ -7180,16 +8558,71 @@ "node": ">=10" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, "engines": { - "node": ">=6.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" }, "peerDependenciesMeta": { "supports-color": { @@ -7197,41 +8630,56 @@ } } }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "dev": true, + "license": "MIT" + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deep-equal": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", - "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.2", - "get-intrinsic": "^1.1.3", "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.1", "is-date-object": "^1.0.5", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", "object-is": "^1.1.5", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "regexp.prototype.flags": "^1.5.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7241,44 +8689,187 @@ "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 + "dev": true, + "license": "MIT" }, "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "execa": "^5.0.0" + "execa": "^1.0.0", + "ip-regex": "^2.1.0" }, "engines": { - "node": ">= 10" + "node": ">=6" } }, - "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==", + "node_modules/default-gateway/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, "engines": { - "node": ">=8" + "node": ">=4.8" } }, - "node_modules/define-properties": { + "node_modules/default-gateway/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/default-gateway/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/default-gateway/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/default-gateway/node_modules/shebang-command": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway/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" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -7289,11 +8880,109 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby/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/del/node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, "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" } @@ -7303,15 +8992,28 @@ "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/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.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" @@ -7322,6 +9024,7 @@ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7330,13 +9033,15 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/detect-port-alt": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", "dev": true, + "license": "MIT", "dependencies": { "address": "^1.0.1", "debug": "^2.6.0" @@ -7354,6 +9059,7 @@ "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" } @@ -7362,28 +9068,44 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" + }, "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" }, @@ -7391,28 +9113,43 @@ "node": ">=8" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "node_modules/dnd-core": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-11.1.3.tgz", + "integrity": "sha512-QugF55dNW+h+vzxVJ/LSJeTeUw9MCJ2cllhmVThVPEtF16ooBkxj0WBE5RB+AceFxMFo1rO6bJKXtqKl+JNnyA==", + "dev": true, + "dependencies": { + "@react-dnd/asap": "^4.0.0", + "@react-dnd/invariant": "^2.0.0", + "redux": "^4.0.4" + } }, "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dns-packet": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", - "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", "dev": true, + "license": "MIT", "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-indexof": "^1.0.0" } }, "node_modules/doctrine": { @@ -7420,6 +9157,7 @@ "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" }, @@ -7431,13 +9169,15 @@ "version": "0.5.16", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, + "license": "MIT", "dependencies": { "utila": "~0.4" } @@ -7447,6 +9187,7 @@ "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", @@ -7456,23 +9197,37 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domexception": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", "dev": true, + "license": "MIT", "dependencies": { "webidl-conversions": "^5.0.0" }, @@ -7485,6 +9240,7 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=8" } @@ -7494,6 +9250,7 @@ "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" }, @@ -7509,6 +9266,7 @@ "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", @@ -7523,64 +9281,141 @@ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=8" } }, "node_modules/dotenv-expand": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", "dev": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, + "hasInstallScript": true, + "license": "Apache-2.0", "engines": { "node": ">=0.10.0" } }, "node_modules/electron-to-chromium": { - "version": "1.4.372", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.372.tgz", - "integrity": "sha512-MrlFq/j+TYHOjeWsWGYfzevc25HNeJdsF6qaLFrqBTRWZQtWkb1myq/Q2veLWezVaa5OcSZ99CFwTT4aF4Mung==", - "dev": true + "version": "1.5.134", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.134.tgz", + "integrity": "sha512-zSwzrLg3jNP3bwsLqWHmS5z2nIOQ5ngMnfMZOWWtXnqqQkPVyOipxK98w+1beLw1TB+EImPNcG8wVP/cLVs2Og==", + "dev": true, + "license": "ISC" + }, + "node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true, + "license": "MIT" }, "node_modules/emittery": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -7592,53 +9427,147 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "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/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "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", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/enhanced-resolve": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", - "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=6.9.0" + } + }, + "node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "license": "MIT", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" } }, + "node_modules/ensure-type": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ensure-type/-/ensure-type-1.5.1.tgz", + "integrity": "sha512-Dxe+mVF4MupV6eueWiFa6hUd9OL9lIM2/LqR40k1P+dwG+G2il2UigXTU9aQlaw+Y/N0BKSaTofNw73htTbC5g==", + "dev": true, + "license": "MIT" + }, "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/eol": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", + "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==", + "dev": true, + "license": "MIT" + }, + "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", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -7648,50 +9577,69 @@ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "dev": true, + "license": "MIT", "dependencies": { "stackframe": "^1.3.4" } }, "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -7704,13 +9652,35 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, "node_modules/es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -7726,44 +9696,86 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-module-lexer": { + "node_modules/es-iterator-helpers": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", - "dev": true + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, + "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -7772,11 +9784,55 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dev": true, + "hasInstallScript": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -7785,27 +9841,32 @@ "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 + "dev": true, + "license": "MIT" }, "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==", + "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": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "esutils": "^2.0.2" }, "bin": { "escodegen": "bin/escodegen.js", @@ -7818,161 +9879,109 @@ "source-map": "~0.6.1" } }, - "node_modules/escodegen/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 0.8.0" + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/escodegen/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/eslint-config-react-app": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz", + "integrity": "sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A==", "dev": true, + "license": "MIT", "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", - "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.39.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-react-app": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", - "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.16.0", - "@babel/eslint-parser": "^7.16.3", - "@rushstack/eslint-patch": "^1.1.0", - "@typescript-eslint/eslint-plugin": "^5.5.0", - "@typescript-eslint/parser": "^5.5.0", - "babel-preset-react-app": "^10.0.1", - "confusing-browser-globals": "^1.0.11", - "eslint-plugin-flowtype": "^8.0.3", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jest": "^25.3.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.1", - "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-testing-library": "^5.0.1" + "confusing-browser-globals": "^1.0.10" }, "engines": { - "node": ">=14.0.0" + "node": "^10.12.0 || >=12.0.0" }, "peerDependencies": { - "eslint": "^8.0.0" + "@typescript-eslint/eslint-plugin": "^4.0.0", + "@typescript-eslint/parser": "^4.0.0", + "babel-eslint": "^10.0.0", + "eslint": "^7.5.0", + "eslint-plugin-flowtype": "^5.2.0", + "eslint-plugin-import": "^2.22.0", + "eslint-plugin-jest": "^24.0.0", + "eslint-plugin-jsx-a11y": "^6.3.1", + "eslint-plugin-react": "^7.20.3", + "eslint-plugin-react-hooks": "^4.0.8", + "eslint-plugin-testing-library": "^3.9.0" + }, + "peerDependenciesMeta": { + "eslint-plugin-jest": { + "optional": true + }, + "eslint-plugin-testing-library": { + "optional": true + } } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -7980,15 +9989,17 @@ "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/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -8006,55 +10017,60 @@ "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/eslint-plugin-flowtype": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", - "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz", + "integrity": "sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "lodash": "^4.17.21", + "lodash": "^4.17.15", "string-natural-compare": "^3.0.1" }, "engines": { - "node": ">=12.0.0" + "node": "^10.12.0 || >=12.0.0" }, "peerDependencies": { - "@babel/plugin-syntax-flow": "^7.14.5", - "@babel/plugin-transform-react-jsx": "^7.14.9", - "eslint": "^8.1.0" + "eslint": "^7.1.0" } }, "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -8062,6 +10078,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" } @@ -8071,6 +10088,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -8078,112 +10096,97 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-jest": { - "version": "25.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", - "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.7.0.tgz", + "integrity": "sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/experimental-utils": "^5.0.0" + "@typescript-eslint/experimental-utils": "^4.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "@typescript-eslint/eslint-plugin": ">= 4", + "eslint": ">=5" }, "peerDependenciesMeta": { "@typescript-eslint/eslint-plugin": { "optional": true - }, - "jest": { - "optional": true } } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" }, "engines": { "node": ">=4.0" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -8196,6 +10199,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -8204,12 +10208,13 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, + "license": "MIT", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -8220,287 +10225,334 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-testing-library": { - "version": "5.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.10.3.tgz", - "integrity": "sha512-0yhsKFsjHLud5PM+f2dWr9K3rqYzMy4cSHs3lcmFYMa1CdSzRvHGgXvsFarBjZ41gU8jhTdMIkg8jHLxGJqLqw==", + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz", + "integrity": "sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^5.58.0" + "@typescript-eslint/experimental-utils": "^3.10.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "node": "^10.12.0 || >=12.0.0", "npm": ">=6" }, "peerDependencies": { - "eslint": "^7.5.0 || ^8.0.0" + "eslint": "^5 || ^6 || ^7" } }, - "node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/experimental-utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", + "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", "dev": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "@types/json-schema": "^7.0.3", + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/typescript-estree": "3.10.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^10.12.0 || >=12.0.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", + "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", + "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@types/eslint": "^7.29.0 || ^8.4.1", - "jest-worker": "^28.0.2", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0" + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/visitor-keys": "3.10.1", + "debug": "^4.1.1", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" }, "engines": { - "node": ">= 12.13.0" + "node": "^10.12.0 || >=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0", - "webpack": "^5.0.0" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/eslint-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", + "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/eslint-webpack-plugin/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==", + "node_modules/eslint-plugin-testing-library/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" + "eslint-visitor-keys": "^1.1.0" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/eslint-webpack-plugin/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==", + "node_modules/eslint-plugin-testing-library/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/eslint-webpack-plugin/node_modules/jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "node_modules/eslint-plugin-testing-library/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": ">=10" } }, - "node_modules/eslint-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "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": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=8.0.0" } }, - "node_modules/eslint-webpack-plugin/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==", + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=4.0" } }, - "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==", + "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": { - "color-convert": "^2.0.1" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=8" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "Apache-2.0", "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/eslint-webpack-plugin": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-2.7.0.tgz", + "integrity": "sha512-bNaVVUvU4srexGhVcayn/F4pJAz19CWBkKoMx7aSQ4wtTbZQCnG5O9LHCE42mM+JSKOUp7n6vd5CIwzj7lOVGA==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@types/eslint": "^7.29.0", + "arrify": "^2.0.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "webpack": "^4.0.0 || ^5.0.0" + } }, - "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==", + "node_modules/eslint-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "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" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "node_modules/eslint/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, + "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": ">=8" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/mysticatea" } }, - "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==", + "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=4" } }, - "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==", + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "type-fest": "^0.20.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/eslint/node_modules/type-fest": { @@ -8508,6 +10560,7 @@ "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" }, @@ -8515,21 +10568,58 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" } }, "node_modules/esprima": { @@ -8537,6 +10627,7 @@ "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" @@ -8545,11 +10636,26 @@ "node": ">=4" } }, + "node_modules/esprima-next": { + "version": "5.8.4", + "resolved": "https://registry.npmjs.org/esprima-next/-/esprima-next-5.8.4.tgz", + "integrity": "sha512-8nYVZ4ioIH4Msjb/XmhnBdz5WRRBaYqevKa1cv9nGJdCehMbzZCPNEEnqfLCZVetUVrUPEcb5IYyu1GG4hFqgg==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -8562,6 +10668,7 @@ "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" }, @@ -8574,6 +10681,7 @@ "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" } @@ -8582,13 +10690,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "dev": true + "dev": true, + "license": "MIT" }, "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" } @@ -8598,30 +10708,83 @@ "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/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true + "dev": true, + "license": "MIT" }, "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/eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true, + "license": "MIT" + }, "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", @@ -8644,7 +10807,8 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/exit": { "version": "0.1.2", @@ -8655,176 +10819,142 @@ "node": ">= 0.8.0" } }, - "node_modules/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/expect/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/expect/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "node_modules/expand-brackets/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": { - "@types/yargs-parser": "*" + "ms": "2.0.0" } }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "is-descriptor": "^0.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/expect/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/expect/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" } }, - "node_modules/expect/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/expect/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/expect/node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/expect/node_modules/jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/expect/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -8833,19 +10963,25 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true + "dev": true, + "license": "MIT" }, "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" } @@ -8854,59 +10990,173 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "node_modules/express/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "side-channel": "^1.0.6" }, "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/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==", + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dev": true, + "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "type": "^2.7.2" + } + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" } }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/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 + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -8916,6 +11166,7 @@ "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" }, @@ -8928,15 +11179,25 @@ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } }, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "deprecated": "This module is no longer supported.", + "dev": true, + "license": "ISC" + }, "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" }, @@ -8945,10 +11206,11 @@ } }, "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.1.1.tgz", + "integrity": "sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" @@ -8964,50 +11226,61 @@ "webpack": "^4.0.0 || ^5.0.0" } }, - "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, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/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==", + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/file-selector": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.4.0.tgz", + "integrity": "sha512-iACCiXeMYOvZqlF1kTiYINzgepRBymz1wwjiuup9u9nayhb6g4fSwiyJ/6adli+EPwrWtpgQAh2PoS7HukEGEg==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "tslib": "^2.0.3" }, "engines": { - "node": ">=10" + "node": ">= 10" } }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz", + "integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 0.4.0" } }, "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==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9015,14 +11288,26 @@ "node": ">=8" } }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -9038,6 +11323,7 @@ "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" } @@ -9046,48 +11332,134 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "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==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/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" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, "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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", + "locate-path": "^5.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -9095,15 +11467,35 @@ } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", + "dev": true, + "license": "MIT" + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "dev": true, "funding": [ { @@ -9111,6 +11503,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -9121,199 +11514,298 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", - "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-4.1.6.tgz", + "integrity": "sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" }, "engines": { - "node": ">=10", + "node": ">=6.11.5", "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } } }, "node_modules/fork-ts-checker-webpack-plugin/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==", + "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": "^2.0.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "node_modules/fork-ts-checker-webpack-plugin/node_modules/braces/node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "node_modules/fork-ts-checker-webpack-plugin/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/fork-ts-checker-webpack-plugin/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/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==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, "node_modules/fork-ts-checker-webpack-plugin/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==", + "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": ">=8" + "node": ">=4" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" + "kind-of": "^3.0.2" }, "engines": { - "node": ">= 8.9.0" + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, "node_modules/fork-ts-checker-webpack-plugin/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==", + "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": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.3.tgz", + "integrity": "sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" } }, "node_modules/formik": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/formik/-/formik-2.2.9.tgz", - "integrity": "sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/formik/-/formik-2.4.6.tgz", + "integrity": "sha512-A+2EI7U7aG296q2TLGvNapDNTZp1khVt5Vk0Q/fyfSROss0V/V6+txt2aJnwEos44IxTCW/LYAi/zgWzlevj+g==", "dev": true, "funding": [ { @@ -9321,60 +11813,42 @@ "url": "https://opencollective.com/formik" } ], + "license": "Apache-2.0", "dependencies": { + "@types/hoist-non-react-statics": "^3.3.1", "deepmerge": "^2.1.1", "hoist-non-react-statics": "^3.3.0", "lodash": "^4.17.21", "lodash-es": "^4.17.21", "react-fast-compare": "^2.0.1", "tiny-warning": "^1.0.2", - "tslib": "^1.10.0" + "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0" } }, - "node_modules/formik/node_modules/deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/formik/node_modules/react-fast-compare": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", - "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==", - "dev": true - }, - "node_modules/formik/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/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==", + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "dev": true, - "engines": { - "node": "*" + "license": "MIT", + "dependencies": { + "map-cache": "^0.2.2" }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" + "engines": { + "node": ">=0.10.0" } }, "node_modules/fresh": { @@ -9382,42 +11856,93 @@ "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/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, "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==", + "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", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true + "node_modules/fs-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" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-mkdirp-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz", + "integrity": "sha512-UTOY+59K6IA94tec8Wjqm0FSh5OVudGNB0NL/P6fB3HiE3bYOY3VYBGijsnOHNkQSwC1FKkU77pmq7xp9CskLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.8", + "streamx": "^2.12.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "deprecated": "This package is no longer supported.", + "dev": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -9427,21 +11952,28 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -9450,11 +11982,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/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, + "license": "MIT" + }, "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9464,6 +12004,7 @@ "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" } @@ -9473,19 +12014,31 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9495,22 +12048,39 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true + "dev": true, + "license": "ISC" }, "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-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "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" }, @@ -9519,13 +12089,15 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -9534,15 +12106,97 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gettext-converter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/gettext-converter/-/gettext-converter-1.3.0.tgz", + "integrity": "sha512-vXjx4vRBjw6rd3Zg73IMyNLZuPjs8/lE9gJZs270YJJI0t5vlCpdsyX5E0TmSd+KcRWzwPbwjwd6bnNpF72sFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^2.0.1", + "content-type": "1.0.5", + "encoding": "0.1.13" + } + }, + "node_modules/gettext-parser": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-8.0.0.tgz", + "integrity": "sha512-eFmhDi2xQ+2reMRY2AbJ2oa10uFOl1oyGbAKdCZiNOk94NJHi7aN0OBELSC9v35ZAPQdr+uRBi93/Gu4SlBdrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "encoding": "^0.1.13", + "readable-stream": "^4.5.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/gettext-parser/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/gettext-parser/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" @@ -9555,10 +12209,44 @@ } }, "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" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-stream": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-8.0.2.tgz", + "integrity": "sha512-R8z6eTB55t3QeZMmU1C+Gv+t5UnNRkA55c5yo67fAVfxODxieTwsjNG7utxS/73NdP1NbDgCrhVEg2h00y4fFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@gulpjs/to-absolute-glob": "^4.0.0", + "anymatch": "^3.1.3", + "fastq": "^1.13.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "is-negated-glob": "^1.0.0", + "normalize-path": "^3.0.0", + "streamx": "^2.12.5" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-stream/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" }, @@ -9566,17 +12254,12 @@ "node": ">=10.13.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, "node_modules/global-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" }, @@ -9589,6 +12272,7 @@ "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", @@ -9603,6 +12287,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -9615,17 +12300,20 @@ "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/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -9639,6 +12327,7 @@ "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", @@ -9655,12 +12344,13 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9670,88 +12360,110 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/gulp-sort": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-sort/-/gulp-sort-2.0.0.tgz", + "integrity": "sha512-MyTel3FXOdh1qhw1yKhpimQrAmur9q1X0ZigLmCOxouQD+BD3za9/89O+HfbgBQvvh4igEbp0/PUWO+VqGYG1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "through2": "^2.0.1" + } }, "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", "dev": true, + "license": "MIT", "dependencies": { - "duplexer": "^0.1.2" + "duplexer": "^0.1.1", + "pify": "^4.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/harmony-reflect": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", - "dev": true + "dev": true, + "license": "(Apache-2.0 OR MPL-1.1)" }, "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, + "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "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==", + "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": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -9760,10 +12472,11 @@ } }, "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==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9772,12 +12485,13 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -9786,44 +12500,174 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "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", "bin": { "he": "bin/he" } }, + "node_modules/hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true - }, "node_modules/hoopy": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6.0.0" } }, + "node_modules/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, + "license": "ISC" + }, "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", @@ -9831,47 +12675,26 @@ "wbuf": "^1.1.0" } }, - "node_modules/hpack.js/node_modules/isarray": { + "node_modules/hsl-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==", "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "license": "MIT" }, - "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==", + "node_modules/hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==", "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } + "license": "MIT" }, "node_modules/html-encoding-sniffer": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-encoding": "^1.0.5" }, @@ -9880,59 +12703,101 @@ } }, "node_modules/html-entities": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", - "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", - "dev": true + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true, + "license": "MIT" }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", "dev": true, + "license": "MIT", "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", "he": "^1.2.0", - "param-case": "^3.0.4", + "param-case": "^3.0.3", "relateurl": "^0.2.7", - "terser": "^5.10.0" + "terser": "^4.6.3" }, "bin": { "html-minifier-terser": "cli.js" }, "engines": { - "node": ">=12" + "node": ">=6" + } + }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "void-elements": "3.1.0" } }, "node_modules/html-webpack-plugin": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.1.tgz", - "integrity": "sha512-cTUzZ1+NqjGEKjmVgZKLMdiFg3m9MdRXkZW2OEe69WYVi5ONLMmlnSZdXzGGMOq0C8jGDrL6EWyEDDUioHO/pA==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz", + "integrity": "sha512-MouoXEYSjTzCrjIxWwg8gxL5fE2X2WZJLmBYXlaJhQUH5K/b5OrqmV7T4dB7iu0xkmJ6JlUuV6fFVtnqbPopZw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" + "node": ">=6.9" }, "peerDependencies": { - "webpack": "^5.20.0" + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/html-webpack-plugin/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" } }, "node_modules/htmlparser2": { @@ -9947,6 +12812,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -9958,13 +12824,15 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true + "dev": true, + "license": "MIT" }, "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", @@ -9977,16 +12845,18 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "dev": true, + "license": "MIT" }, "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", @@ -10001,6 +12871,7 @@ "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", @@ -10011,1552 +12882,1565 @@ } }, "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==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", "dev": true, + "license": "MIT", "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" }, "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } + "node": ">=4.0.0" } }, - "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==", + "node_modules/http-proxy-middleware/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "6", - "debug": "4" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "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==", + "node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, "engines": { - "node": ">=10.17.0" + "node": ">=0.10.0" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/http-proxy-middleware/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, + "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" }, - "peerDependencies": { - "postcss": "^8.1.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", - "dev": true + "node_modules/http-proxy-middleware/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/identity-obj-proxy": { + "node_modules/http-proxy-middleware/node_modules/is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, + "license": "MIT", "dependencies": { - "harmony-reflect": "^1.4.6" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { - "node": ">= 4" + "node": ">=0.10.0" } }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "node_modules/http-proxy-middleware/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "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==", + "node_modules/http-proxy-middleware/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, + "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "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==", + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", "dev": true, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "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": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "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": ">=0.8.19" + "node": ">=10.17.0" } }, - "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==", + "node_modules/i18next": { + "version": "20.6.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz", + "integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.0" } }, - "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==", + "node_modules/i18next-browser-languagedetector": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.8.tgz", + "integrity": "sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA==", "dev": true, + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@babel/runtime": "^7.19.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "node_modules/i18next-conv": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/i18next-conv/-/i18next-conv-15.1.1.tgz", + "integrity": "sha512-PpI8/1jmxM/Sgfxof4SBp3MAIM1HYl/2RwXYBcloqtoOx0IxojMxDvjAiN7FhgVKPjZ0s/jdIP33JQmqCHG3Qg==", "dev": true, + "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "@postalsys/gettext": "^4.0.0", + "colorette": "^2.0.20", + "commander": "^13.0.0", + "gettext-converter": "^1.3.0", + "gettext-parser": "^8.0.0", + "p-from-callback": "^2.0.0" + }, + "bin": { + "i18next-conv": "bin/index.js" }, "engines": { - "node": ">= 0.4" + "node": ">= 18.0" } }, - "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==", + "node_modules/i18next-conv/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 10" + "node": ">=18" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "node_modules/i18next-scanner": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/i18next-scanner/-/i18next-scanner-4.6.0.tgz", + "integrity": "sha512-I/xKcwKfii3L3is3bUvfaIU0QA/wYhpZnjppfrzyb61QQddxkcpspASEtmfnxSYvE6yIaAxDlIxg0EHV7mxssg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "acorn": "^8.0.4", + "acorn-jsx": "^5.3.1", + "acorn-stage3": "^4.0.0", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "clone-deep": "^4.0.0", + "commander": "^9.0.0", + "deepmerge": "^4.0.0", + "ensure-type": "^1.5.0", + "eol": "^0.9.1", + "esprima-next": "^5.7.0", + "gulp-sort": "^2.0.0", + "i18next": "*", + "lodash": "^4.0.0", + "parse5": "^6.0.0", + "sortobject": "^4.0.0", + "through2": "^4.0.0", + "vinyl": "^3.0.0", + "vinyl-fs": "^4.0.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "i18next-scanner": "bin/cli.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12" } }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "node_modules/i18next-scanner/node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "acorn": "^8.11.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/i18next-scanner/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": { - "has-bigints": "^1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", + "node_modules/i18next-scanner/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.20.0 || >=14" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/i18next-scanner/node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/i18next-scanner/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 6" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "node_modules/i18next-scanner/node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, + "license": "MIT", "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "readable-stream": "3" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "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": { - "has-tostringtag": "^1.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", "dev": true, - "bin": { - "is-docker": "cli.js" + "license": "ISC", + "dependencies": { + "postcss": "^7.0.14" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", "dev": true, + "license": "MIT", + "dependencies": { + "harmony-reflect": "^1.4.6" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, - "engines": { - "node": ">=8" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", "dev": true, - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "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==", + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "node_modules/immer": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-8.0.1.tgz", + "integrity": "sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==", "dev": true, + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/immer" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "node_modules/import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", "dev": true, - "engines": { - "node": ">= 0.4" + "license": "MIT", + "dependencies": { + "import-from": "^2.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { - "node": ">=0.12.0" + "node": ">=4" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "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": ">=0.10.0" + "node": ">=4" } }, - "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==", + "node_modules/import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/is-plain-obj": { + "node_modules/import-from/node_modules/resolve-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "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.10.0" + "node": ">=0.8.19" } }, - "node_modules/is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "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": ">=6" + "node": ">=8" } }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true, + "license": "ISC" + }, + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "once": "^1.3.0", + "wrappy": "1" } }, - "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==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "ISC" }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, + "license": "ISC" + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "node_modules/ip": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.9.tgz", + "integrity": "sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==", "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "MIT" + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true + "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/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "node_modules/is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "hasown": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.10" } }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "node_modules/is-arguments": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, + "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "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==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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", + "optional": true, "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "binary-extensions": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "ci-info": "^2.0.0" }, - "engines": { - "node": ">=10" + "bin": { + "is-ci": "bin.js" } }, - "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==", + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT" + }, + "node_modules/is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" } }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "node_modules/is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", "dev": true, + "license": "MIT", "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" + "hasown": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "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==", + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" } }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/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==", + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "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==", + "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, - "dependencies": { - "has-flag": "^4.0.0" + "license": "MIT", + "bin": { + "is-docker": "cli.js" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - }, - "bin": { - "jest": "bin/jest.js" + "is-plain-object": "^2.0.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "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, - "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, + "license": "MIT", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "call-bound": "^1.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "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": { - "color-name": "~1.1.4" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-circus/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "license": "MIT", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, + "license": "MIT" + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true, + "license": "MIT", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "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": ">=8" + "node": ">=0.12.0" } }, - "node_modules/jest-circus/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, + "license": "MIT", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-circus/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, + "license": "MIT", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6" } }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "is-path-inside": "^2.1.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" + "path-is-inside": "^1.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=6" } }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "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, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "isobject": "^3.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/jest-cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "ISC" + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, - "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, + "license": "MIT", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "call-bound": "^1.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "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, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config/node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" + "which-typed-array": "^1.1.16" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "MIT" + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.10.0" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/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==", + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "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": { - "has-flag": "^4.0.0" + "is-docker": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/jest-config/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==", + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } + "license": "MIT" }, - "node_modules/jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, + "license": "ISC" + }, + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "color-convert": "^2.0.1" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "ansi-styles": "^4.1.0", + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "color-name": "~1.1.4" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" } }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/jest-diff/node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-diff/node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/jest-diff/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-docblock": { + "node_modules/jest-changed-files": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", "dev": true, + "license": "MIT", "dependencies": { - "detect-newline": "^3.0.0" + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-each": { + "node_modules/jest-changed-files/node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-changed-files/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/yargs-parser": "*" } }, - "node_modules/jest-each/node_modules/chalk": { + "node_modules/jest-changed-files/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" @@ -11568,163 +14452,256 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" }, "engines": { - "node": ">=7.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-circus/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-circus/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-environment-jsdom": { + "node_modules/jest-circus/node_modules/diff-sequences": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-environment-node": { + "node_modules/jest-circus/node_modules/jest-diff": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-get-type": { + "node_modules/jest-circus/node_modules/jest-get-type": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, + "license": "MIT", "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-haste-map": { + "node_modules/jest-circus/node_modules/jest-matcher-utils": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, + "license": "MIT", "dependencies": { + "@babel/code-frame": "^7.12.13", "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", "micromatch": "^4.0.4", - "walker": "^1.0.7" + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-jasmine2": { + "node_modules/jest-cli": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", + "@jest/core": "^27.5.1", "@jest/test-result": "^27.5.1", "@jest/types": "^27.5.1", - "@types/node": "*", "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-jasmine2/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==", + "node_modules/jest-cli/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-jasmine2/node_modules/chalk": { + "node_modules/jest-cli/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11736,167 +14713,184 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-jasmine2/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==", + "node_modules/jest-cli/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-jasmine2/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-jasmine2/node_modules/expect": { + "node_modules/jest-config": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", "dev": true, + "license": "MIT", "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } } }, - "node_modules/jest-jasmine2/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-jasmine2/node_modules/jest-diff": { + "node_modules/jest-config/node_modules/@jest/transform": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, + "license": "MIT", "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { + "node_modules/jest-config/node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-jasmine2/node_modules/jest-message-util": { + "node_modules/jest-config/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-config/node_modules/babel-jest": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", + "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", + "@jest/transform": "^27.5.1", "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^27.5.1", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "slash": "^3.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/jest-jasmine2/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==", + "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", + "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-leak-detector": { + "node_modules/jest-config/node_modules/babel-preset-jest": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", + "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", "dev": true, + "license": "MIT", "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "babel-plugin-jest-hoist": "^27.5.1", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { + "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11908,152 +14902,123 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-config/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "license": "MIT" }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-config/node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "node_modules/jest-config/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "node_modules/jest-config/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-matcher-utils/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-config/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", + "node_modules/jest-config/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", - "@types/stack-utils": "^2.0.0", + "@jest/types": "^27.5.1", + "@types/node": "*", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "picomatch": "^2.2.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-message-util/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "node_modules/jest-config/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": { - "@types/yargs-parser": "*" + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, - "node_modules/jest-message-util/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==", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/chalk": { + "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12065,40 +15030,14 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -12106,11 +15045,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -12118,118 +15058,167 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" }, - "node_modules/jest-message-util/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==", + "node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-mock": { + "node_modules/jest-each": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", - "@types/node": "*" + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { + "node_modules/jest-each/node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", + "node_modules/jest-each/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-each/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", + "@types/node": "*", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" + "picomatch": "^2.2.3" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-resolve-dependencies": { + "node_modules/jest-environment-jsdom": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", + "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", "dev": true, + "license": "MIT", "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1", + "jsdom": "^16.6.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-resolve/node_modules/chalk": { + "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-environment-jsdom/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" @@ -12241,123 +15230,75 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/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==", + "node_modules/jest-environment-jsdom/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runner": { + "node_modules/jest-environment-node": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/console": "^27.5.1", "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", + "@jest/fake-timers": "^27.5.1", "@jest/types": "^27.5.1", "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runner/node_modules/@jest/transform": { + "node_modules/jest-environment-node/node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-environment-node/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/yargs-parser": "*" } }, - "node_modules/jest-runner/node_modules/chalk": { + "node_modules/jest-environment-node/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" @@ -12369,165 +15310,154 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-environment-node/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=7.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "walker": "^1.0.8" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-runner/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-haste-map/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest-runner/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, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/jest-runtime": { + "node_modules/jest-jasmine2": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", + "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", "@jest/source-map": "^27.5.1", "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", "@jest/types": "^27.5.1", + "@types/node": "*", "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", + "co": "^4.6.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", "jest-snapshot": "^27.5.1", "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "pretty-format": "^27.5.1", + "throat": "^6.0.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runtime/node_modules/@jest/transform": { + "node_modules/jest-jasmine2/node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-jasmine2/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/yargs-parser": "*" } }, - "node_modules/jest-runtime/node_modules/chalk": { + "node_modules/jest-jasmine2/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" @@ -12539,178 +15469,159 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-jasmine2/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, + "license": "MIT", "engines": { - "node": ">=7.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-jasmine2/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runtime/node_modules/jest-message-util": { + "node_modules/jest-jasmine2/node_modules/jest-diff": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runtime/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==", + "node_modules/jest-jasmine2/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-runtime/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==", + "node_modules/jest-jasmine2/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-serializer": { + "node_modules/jest-jasmine2/node_modules/jest-util": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { + "@jest/types": "^27.5.1", "@types/node": "*", - "graceful-fs": "^4.2.9" + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-snapshot": { + "node_modules/jest-leak-detector": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-snapshot/node_modules/@jest/transform": { + "node_modules/jest-leak-detector/node_modules/jest-get-type": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, + "license": "MIT", "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/chalk": { + "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12722,177 +15633,161 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=7.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "node": ">=10" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, + "license": "MIT", "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "node_modules/jest-message-util/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": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/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==", + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/jest-snapshot/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==", + "node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-util": { + "node_modules/jest-mock/node_modules/@jest/types": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-util/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==", + "node_modules/jest-mock/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/yargs-parser": "*" } }, - "node_modules/jest-util/node_modules/chalk": { + "node_modules/jest-mock/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" @@ -12904,82 +15799,104 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-util/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==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, + "license": "MIT", "engines": { - "node": ">=7.0.0" + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-util/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==", + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-util/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==", + "node_modules/jest-resolve": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", + "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate": { + "node_modules/jest-resolve-dependencies": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate/node_modules/chalk": { + "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-resolve-dependencies/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" @@ -12991,171 +15908,208 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, + "license": "MIT", "engines": { - "node": ">=7.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-resolve/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-resolve/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@types/yargs-parser": "*" } }, - "node_modules/jest-watch-typeahead": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", - "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "jest-regex-util": "^28.0.0", - "jest-watcher": "^28.0.0", - "slash": "^4.0.0", - "string-length": "^5.0.1", - "strip-ansi": "^7.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, - "peerDependencies": { - "jest": "^27.0.0 || ^28.0.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watch-typeahead/node_modules/@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "node_modules/jest-resolve/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/jest-resolve/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "node_modules/jest-resolve/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.24.1" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runner/node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "node_modules/jest-runner/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^28.1.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^17.0.8", + "@types/yargs": "^16.0.0", "chalk": "^4.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true - }, - "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "node_modules/jest-runner/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, - "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/chalk": { + "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13167,90 +16121,79 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watch-typeahead/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==", + "node_modules/jest-runner/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "license": "MIT" }, - "node_modules/jest-watch-typeahead/node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "node_modules/jest-runner/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "node_modules/jest-runner/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", + "@jest/types": "^27.5.1", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", + "pretty-format": "^27.5.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "node_modules/jest-runner/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "node_modules/jest-runner/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^28.1.3", + "@jest/types": "^27.5.1", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -13258,200 +16201,331 @@ "picomatch": "^2.2.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "dev": true, - "dependencies": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "node_modules/jest-runner/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": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher/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==", + "node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "node_modules/jest-runtime/node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-runtime/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-runtime/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watch-typeahead/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + "node_modules/jest-runtime/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" }, - "node_modules/jest-watch-typeahead/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/jest-runtime/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, "engines": { - "node": ">=12" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-watch-typeahead/node_modules/string-length": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", - "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "node_modules/jest-runtime/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, + "license": "MIT", "dependencies": { - "char-regex": "^2.0.0", - "strip-ansi": "^7.0.1" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", - "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", + "node_modules/jest-runtime/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12.20" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "node_modules/jest-runtime/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/jest-runtime/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, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, - "node_modules/jest-watch-typeahead/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==", + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@types/node": "*", + "graceful-fs": "^4.2.9" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watcher": { + "node_modules/jest-snapshot": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/test-result": "^27.5.1", + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", "jest-util": "^27.5.1", - "string-length": "^4.0.1" + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-snapshot/node_modules/@jest/transform": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", + "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@babel/core": "^7.1.0", + "@jest/types": "^27.5.1", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-util": "^27.5.1", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watcher/node_modules/chalk": { + "node_modules/jest-snapshot/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13463,5057 +16537,4843 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-snapshot/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "license": "MIT" }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-snapshot/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-snapshot/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" }, "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-worker": { + "node_modules/jest-snapshot/node_modules/jest-diff": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { - "node": ">= 10.13.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-snapshot/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/jest-snapshot/node_modules/jest-haste-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", + "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "^27.5.1", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^27.5.1", + "jest-serializer": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "micromatch": "^4.0.4", + "walker": "^1.0.7" }, "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jiti": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", - "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", - "dev": true, - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/jquery": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", - "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==", - "dev": true - }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "node_modules/jest-snapshot/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", "dev": true, + "license": "MIT", "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/jest-snapshot/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "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": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/jest-snapshot/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, - "bin": { - "json5": "lib/cli.js" + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=6" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "universalify": "^2.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=10" } }, - "node_modules/jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "node_modules/jest-snapshot/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, - "engines": { - "node": ">=0.10.0" + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, - "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyboard-key": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keyboard-key/-/keyboard-key-1.1.0.tgz", - "integrity": "sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ==", - "dev": true - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "node_modules/jest-util/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" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "node_modules/jest-validate": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", + "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "leven": "^3.1.0", + "pretty-format": "^27.5.1" + }, "engines": { - "node": ">= 8" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true - }, - "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "node_modules/jest-validate/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "language-subtag-registry": "~0.3.2" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/launch-editor": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", - "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "node_modules/jest-validate/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, + "license": "MIT", "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.7.3" + "@types/yargs-parser": "*" } }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "node_modules/jest-validate/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, "engines": { - "node": ">=6.11.5" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/jest-watcher/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, + "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=8.9.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "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==", + "node_modules/jest-watcher/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/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 - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/jest-watcher/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "dev": true, + "license": "MIT", "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, - "bin": { - "loose-envify": "cli.js" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "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": { - "tslib": "^2.0.3" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "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": { - "yallist": "^3.0.2" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", "dev": true, - "bin": { - "lz-string": "bin/bin.js" - } + "license": "MIT" }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "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": { - "sourcemap-codec": "^1.4.8" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "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==", + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", "dev": true, + "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "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==", + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { - "semver": "bin/semver.js" + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } + "license": "MIT" }, - "node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "license": "MIT" }, - "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==", + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, - "engines": { - "node": ">= 0.6" - } + "license": "MIT" }, - "node_modules/memfs": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.1.tgz", - "integrity": "sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA==", + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "dependencies": { - "fs-monkey": "^1.0.3" - }, - "engines": { - "node": ">= 4.0.0" - } + "license": "MIT" }, - "node_modules/merge-descriptors": { + "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "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, + "license": "MIT" }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "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, - "engines": { - "node": ">= 0.6" + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/jsonpath": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz", + "integrity": "sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" + "esprima": "1.2.2", + "static-eval": "2.0.2", + "underscore": "1.12.1" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/jsonpath/node_modules/esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==", "dev": true, "bin": { - "mime": "cli.js" + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=4" + "node": ">=0.4.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, "engines": { - "node": ">= 0.6" + "node": ">=4.0" } }, - "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==", + "node_modules/keyboard-key": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keyboard-key/-/keyboard-key-1.1.0.tgz", + "integrity": "sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" + "json-buffer": "3.0.1" } }, - "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==", + "node_modules/killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true, + "license": "ISC" + }, + "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": ">=6" + "node": ">=0.10.0" } }, - "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==", + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/mini-css-extract-plugin": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.5.tgz", - "integrity": "sha512-9HaR++0mlgom81s95vvNjxkg52n2b5s//3ZTI1EtzFb98awsLSivs2LMsVqnQ3ay0PVhqWcGNyDaTE961FOcjQ==", + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, - "dependencies": { - "schema-utils": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "node": ">= 8" } }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "language-subtag-registry": "^0.3.20" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=0.10" } }, - "node_modules/mini-css-extract-plugin/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==", + "node_modules/last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" } }, - "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "node_modules/lead": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-4.0.0.tgz", + "integrity": "sha512-DpMa59o5uGUWWjruMp71e6knmwKU3jRBBn1kjuLWN9EeIOxNeSAwvHf03WIl8g/ZMR2oSQC9ej3yeLBwdDc/pg==", "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, + "license": "MIT", "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=10.13.0" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "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": { - "brace-expansion": "^1.1.7" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": "*" + "node": ">= 0.8.0" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "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==", + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { - "minimist": "^1.2.6" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=8.9.0" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" + "p-locate": "^4.1.0" }, - "bin": { - "multicast-dns": "cli.js" + "engines": { + "node": ">=8" } }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } + "license": "MIT" }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } + "license": "MIT" }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true, + "license": "MIT" }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true + "node_modules/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, + "license": "MIT" }, - "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==", + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", "dev": true, - "engines": { - "node": ">= 0.6" - } + "license": "MIT" }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "deprecated": "This package is deprecated. Use https://socket.dev/npm/package/eta instead.", "dev": true, + "license": "MIT", "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" } }, - "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==", + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", "dev": true, - "engines": { - "node": ">= 6.13.0" + "license": "MIT", + "dependencies": { + "lodash._reinterpolate": "^3.0.0" } }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" }, - "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==", + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "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==", + "node_modules/log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "chalk": "^2.4.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "node_modules/log-symbols/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, - "engines": { - "node": ">=10" + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^1.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4" } }, - "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==", + "node_modules/log-symbols/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", + "peer": true, "dependencies": { - "path-key": "^3.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "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==", + "node_modules/log-symbols/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", + "peer": true, "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "color-name": "1.1.3" } }, - "node_modules/nwsapi": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", - "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==", - "dev": true + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT", + "peer": true }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/log-symbols/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", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, - "node_modules/object-hash": { + "node_modules/log-symbols/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", + "peer": true, "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "node_modules/log-symbols/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", + "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "has-flag": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "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==", + "node_modules/loglevel": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" } }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "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": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" + "js-tokens": "^3.0.0 || ^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" + "tslib": "^2.0.3" } }, - "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "yallist": "^3.0.2" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz", - "integrity": "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==", + "node_modules/luxon": { + "version": "1.28.1", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz", + "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==", "dev": true, - "dependencies": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.2", - "safe-array-concat": "^1.0.0" - }, + "license": "MIT", + "peer": true, "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "*" } }, - "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "sourcemap-codec": "^1.4.8" } }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "semver": "^7.5.3" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "ee-first": "1.1.1" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 0.8" + "node": ">=10" } }, - "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==", + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, - "engines": { - "node": ">= 0.8" + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" } }, - "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==", + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", "dev": true, - "dependencies": { - "wrappy": "1" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "dev": true, + "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "object-visit": "^1.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, + "license": "MIT", "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "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==", + "node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, + "license": "CC0-1.0" + }, + "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": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "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==", + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", "dev": true, + "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "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": ">=6" + "node": ">= 0.6" } }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "node_modules/microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", "dev": true, - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } + "license": "MIT" }, - "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==", + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "callsites": "^3.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=6" + "node": ">=8.6" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "miller-rabin": "bin/miller-rabin" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "dev": true, - "engines": { - "node": ">= 0.8" - } + "license": "MIT" }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "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, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "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": ">=8" + "node": ">= 0.6" } }, - "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==", + "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" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "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==", + "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": ">=8" + "node": ">=6" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "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": ">=8" + "node": ">=4" } }, - "node_modules/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 - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/mini-css-extract-plugin": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz", + "integrity": "sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA==", "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, "engines": { - "node": ">=8.6" + "node": ">= 6.9.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.0.0" } }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/mini-css-extract-plugin/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "node_modules/mini-css-extract-plugin/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, "engines": { - "node": ">= 6" + "node": ">=4.0.0" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true, + "license": "MIT" + }, + "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": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "license": "ISC", "dependencies": { - "p-locate": "^4.1.0" + "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "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": { - "p-try": "^2.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "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": { - "p-limit": "^2.2.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "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": { - "find-up": "^3.0.0" + "minipass": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "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": { - "locate-path": "^3.0.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/pkg-up/node_modules/locate-path": { + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/mississippi": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=4.0.0" } }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, + "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "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": { - "p-limit": "^2.0.0" + "minimist": "^1.2.6" }, - "engines": { - "node": ">=6" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", + "deprecated": "This package is no longer supported.", "dev": true, - "engines": { - "node": ">=4" + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" } }, - "node_modules/postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "node_modules/move-concurrently/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "license": "ISC", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "glob": "^7.1.3" }, - "engines": { - "node": "^10 || ^12 || >=14" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/postcss-attribute-case-insensitive": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "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" + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" }, - "peerDependencies": { - "postcss": "^8.2" + "bin": { + "multicast-dns": "cli.js" } }, - "node_modules/postcss-browser-comments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", - "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", "dev": true, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "browserslist": ">=4", - "postcss": ">=8" - } + "license": "MIT" }, - "node_modules/postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "node_modules/nan": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", + "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" - } + "license": "MIT", + "optional": true }, - "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==", + "node_modules/nanoclone": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", + "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": ">=7.6.0" - }, - "peerDependencies": { - "postcss": "^8.4.6" - } + "license": "MIT", + "peer": true }, - "node_modules/postcss-color-functional-notation": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "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==", + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=0.10.0" } }, - "node_modules/postcss-color-rebeccapurple": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "node_modules/native-url": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.2.6.tgz", + "integrity": "sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "querystring": "^0.2.0" } }, - "node_modules/postcss-colormin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", - "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } + "license": "MIT" }, - "node_modules/postcss-convert-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">= 0.6" } }, - "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==", + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "node_modules/postcss-custom-properties": { - "version": "12.1.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", - "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">= 6.0.0" } }, - "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==", + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.3" + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" } }, - "node_modules/postcss-dir-pseudo-class": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "node_modules/node-notifier/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.10" + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=10" } }, - "node_modules/postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "license": "MIT" + }, + "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", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "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": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "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": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-double-position-gradients": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "node_modules/normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", "dev": true, + "license": "MIT", "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=4" } }, - "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==", + "node_modules/normalize-url/node_modules/query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=0.10.0" } }, - "node_modules/postcss-flexbugs-fixes": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", - "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", + "node_modules/normalize-url/node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", "dev": true, - "peerDependencies": { - "postcss": "^8.1.4" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "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==", + "node_modules/now-and-later": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-3.0.0.tgz", + "integrity": "sha512-pGO4pzSdaxhWTGkfSfHx3hVzJVslFPwBp2Myq9MYN/ChfJZF87ochMAXnvz6/58RJSf5ik2q9tXprBBrk2cpcg==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.9" + "once": "^1.4.0" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">= 10.13.0" } }, - "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==", + "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": { - "postcss-selector-parser": "^6.0.9" + "path-key": "^3.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "peerDependencies": { - "postcss": "^8.4" + "node": ">=8" } }, - "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==", + "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, - "peerDependencies": { - "postcss": "^8.1.0" + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/postcss-gap-properties": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "node_modules/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, + "license": "MIT" + }, + "node_modules/nwsapi": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", + "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=0.10.0" } }, - "node_modules/postcss-image-set-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=0.10.0" } }, - "node_modules/postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" + "is-descriptor": "^0.1.0" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" + "node": ">=0.10.0" } }, - "node_modules/postcss-initial": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", - "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, - "peerDependencies": { - "postcss": "^8.0.0" + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, + "license": "MIT", "dependencies": { - "camelcase-css": "^2.0.1" + "is-buffer": "^1.1.5" }, "engines": { - "node": "^12 || ^14 || >= 16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" + "node": ">=0.10.0" } }, - "node_modules/postcss-lab-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, - "dependencies": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - }, + "license": "MIT", "engines": { - "node": "^12 || ^14 || >=16" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dev": true, + "license": "MIT", "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" }, "engines": { - "node": ">= 14" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", - "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "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": ">= 14" + "node": ">= 0.4" } }, - "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==", + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "dev": true, + "license": "MIT", "dependencies": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" + "isobject": "^3.0.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" + "node": ">=0.10.0" } }, - "node_modules/postcss-logical": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", - "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, - "engines": { - "node": "^12 || ^14 || >=16" + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" }, - "peerDependencies": { - "postcss": "^8.4" - } - }, - "node_modules/postcss-media-minmax": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", - "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", - "dev": true, "engines": { - "node": ">=10.0.0" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">= 0.4" } }, - "node_modules/postcss-merge-rules": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", - "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz", + "integrity": "sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "array.prototype.reduce": "^1.0.6", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "gopd": "^1.0.1", + "safe-array-concat": "^1.1.2" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 0.8" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "license": "MIT", "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">= 0.4" } }, - "node_modules/postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "isobject": "^3.0.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } + "license": "MIT" }, - "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==", + "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": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "ee-first": "1.1.1" }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 0.8" } }, - "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==", + "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, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, + "license": "MIT", "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 0.8" } }, - "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==", + "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": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "wrappy": "1" } }, - "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "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": { - "postcss-selector-parser": "^6.0.11" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=12.0" + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-nesting": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", "dev": true, + "license": "MIT", "dependencies": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", - "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", "dev": true, + "license": "MIT", "dependencies": { - "@csstools/normalize.css": "*", - "postcss-browser-comments": "^4", - "sanitize.css": "*" + "is-wsl": "^1.1.0" }, "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "browserslist": ">= 4", - "postcss": ">= 8" + "node": ">=4" } }, - "node_modules/postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "node_modules/opn/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=4" } }, - "node_modules/postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "node_modules/optimize-css-assets-webpack-plugin": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz", + "integrity": "sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14.0" + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" }, "peerDependencies": { - "postcss": "^8.2.15" + "webpack": "^4.0.0" } }, - "node_modules/postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">= 0.8.0" } }, - "node_modules/postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "node_modules/p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=8" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=4" } }, - "node_modules/postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "node_modules/p-from-callback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-from-callback/-/p-from-callback-2.0.0.tgz", + "integrity": "sha512-0gjkaVoLeg71VE4L7lccq8VPGEpZrVpDsS0s+sk6k3lQUVh9QYQPSog7a/Km407vzQt8zS9MoUMG4EgML//k2Q==", "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - }, + "license": "SEE LICENSE IN LICENSE.md", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=18.0" } }, - "node_modules/postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" + "p-try": "^2.0.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=6" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" + "p-limit": "^2.2.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-opacity-percentage": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", - "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", + "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, - "funding": [ - { - "type": "kofi", - "url": "https://ko-fi.com/mrcgrtz" - }, - { - "type": "liberapay", - "url": "https://liberapay.com/mrcgrtz" - } - ], + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=10" }, - "peerDependencies": { - "postcss": "^8.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "node_modules/p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", "dev": true, + "license": "MIT", "dependencies": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "retry": "^0.12.0" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=6" } }, - "node_modules/postcss-overflow-shorthand": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, + "license": "MIT", "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=6" } }, - "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==", + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true, - "peerDependencies": { - "postcss": "^8" - } + "license": "(MIT AND Zlib)" }, - "node_modules/postcss-place": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "node_modules/parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" } }, - "node_modules/postcss-preset-env": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", - "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", - "dev": true, - "dependencies": { - "@csstools/postcss-cascade-layers": "^1.1.1", - "@csstools/postcss-color-function": "^1.1.1", - "@csstools/postcss-font-format-keywords": "^1.0.1", - "@csstools/postcss-hwb-function": "^1.0.2", - "@csstools/postcss-ic-unit": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^2.0.7", - "@csstools/postcss-nested-calc": "^1.0.0", - "@csstools/postcss-normalize-display-values": "^1.0.1", - "@csstools/postcss-oklab-function": "^1.1.1", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.1", - "@csstools/postcss-text-decoration-shorthand": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.2", - "@csstools/postcss-unset-value": "^1.0.2", - "autoprefixer": "^10.4.13", - "browserslist": "^4.21.4", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.1.0", - "postcss-attribute-case-insensitive": "^5.0.2", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.4", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.1", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.10", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.5", - "postcss-double-position-gradients": "^3.1.2", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.5", - "postcss-image-set-function": "^4.0.7", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.1", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.2.0", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.4", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.5", - "postcss-pseudo-class-any-link": "^7.1.6", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.1", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/postcss-pseudo-class-any-link": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "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": { - "postcss-selector-parser": "^6.0.10" + "callsites": "^3.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">=6" } }, - "node_modules/postcss-reduce-initial": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", - "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "node_modules/parse-asn1": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", "dev": true, + "license": "ISC", "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">= 0.10" } }, - "node_modules/postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "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": { - "postcss-value-parser": "^4.2.0" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": ">=8" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true, - "peerDependencies": { - "postcss": "^8.0.3" - } + "license": "MIT" }, - "node_modules/postcss-selector-not": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "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, - "dependencies": { - "postcss-selector-parser": "^6.0.10" - }, + "license": "MIT", "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - "peerDependencies": { - "postcss": "^8.2" + "node": ">= 0.8" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, + "license": "MIT", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, + "license": "MIT", "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", "dev": true, - "engines": { - "node": ">= 10" - } + "license": "MIT" }, - "node_modules/postcss-svgo/node_modules/css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", "dev": true, - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/postcss-svgo/node_modules/mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "node_modules/postcss-svgo/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==", + "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/postcss-svgo/node_modules/svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "node_modules/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, - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" - }, + "license": "(WTFPL OR MIT)" + }, + "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": ">=10.13.0" + "node": ">=8" } }, - "node_modules/postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" + }, + "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/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.5" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.12" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "node_modules/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, + "license": "MIT" }, - "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==", + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "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": ">= 0.8.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "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==", + "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" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "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, - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "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": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "pinkie": "^2.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 6" + } + }, + "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" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, + "license": "MIT", "dependencies": { - "asap": "~2.0.6" + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, + "license": "MIT", "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">=6" } }, - "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==", + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, + "license": "MIT", "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "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==", + "node_modules/pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", "dev": true, + "license": "MIT", "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "ts-pnp": "^1.1.6" }, "engines": { - "node": ">= 0.10" + "node": ">=6" } }, - "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==", + "node_modules/portfinder": { + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.35.tgz", + "integrity": "sha512-73JaFg4NwYNAufDtS5FsFu/PdM49ahJrO1i44aCRsDWju1z5wuGDaqyFUQWR6aJoK2JPDWlaYYAGFNIGTSUHSw==", "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.6", + "debug": "^4.3.6" + }, "engines": { - "node": ">= 0.10" + "node": ">= 10.12" } }, - "node_modules/psl": { - "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/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" + "node": ">= 0.4" } }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "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": { - "side-channel": "^1.0.4" + "picocolors": "^0.2.1", + "source-map": "^0.6.1" }, "engines": { - "node": ">=0.6" + "node": ">=6.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "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==", + "node_modules/postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "license": "MIT", + "dependencies": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" + } }, - "node_modules/raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "node_modules/postcss-browser-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz", + "integrity": "sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "performance-now": "^2.1.0" + "postcss": "^7" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "browserslist": "^4" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", "dev": true, + "license": "MIT", "dependencies": { - "safe-buffer": "^5.1.0" + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" } }, - "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==", + "node_modules/postcss-color-functional-notation": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", + "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=6.0.0" } }, - "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==", + "node_modules/postcss-color-gray": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", + "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", "dev": true, + "license": "ISC", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=6.0.0" } }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/postcss-color-hex-alpha": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", + "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.14", + "postcss-values-parser": "^2.0.1" + }, "engines": { - "node": ">= 0.8" + "node": ">=6.0.0" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "node_modules/postcss-color-rebeccapurple": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", + "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/react-app-polyfill": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", - "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", + "node_modules/postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", "dev": true, + "license": "MIT", "dependencies": { - "core-js": "^3.19.2", - "object-assign": "^4.1.1", - "promise": "^8.1.0", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.9", - "whatwg-fetch": "^3.6.2" + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "engines": { - "node": ">=14" + "node": ">=6.9.0" } }, - "node_modules/react-dev-utils": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", - "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "node_modules/postcss-colormin/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.11", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=14" - } + "license": "MIT" }, - "node_modules/react-dev-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6.9.0" } }, - "node_modules/react-dev-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/postcss-convert-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-custom-media": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", + "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "postcss": "^7.0.14" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6.0.0" } }, - "node_modules/react-dev-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/postcss-custom-properties": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", + "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "postcss": "^7.0.17", + "postcss-values-parser": "^2.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.0.0" } }, - "node_modules/react-dev-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/react-dev-utils/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==", + "node_modules/postcss-custom-selectors": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", + "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", "dev": true, - "engines": { - "node": ">=10" + "license": "MIT", + "dependencies": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/react-dev-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/postcss-custom-selectors/node_modules/cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, "engines": { - "node": ">= 12.13.0" + "node": ">=4" } }, - "node_modules/react-dev-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/postcss-dir-pseudo-class": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", + "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "has-flag": "^4.0.0" + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "node_modules/postcss-dir-pseudo-class/node_modules/cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true, - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, - "peerDependencies": { - "react": "^18.2.0" + "engines": { + "node": ">=4" } }, - "node_modules/react-error-overlay": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", - "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==", - "dev": true - }, - "node_modules/react-fast-compare": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.1.tgz", - "integrity": "sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg==", - "dev": true - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/react-popper": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", - "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, + "license": "MIT", "dependencies": { - "react-fast-compare": "^3.0.1", - "warning": "^4.0.2" + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" }, - "peerDependencies": { - "@popperjs/core": "^2.0.0", - "react": "^16.8.0 || ^17 || ^18", - "react-dom": "^16.8.0 || ^17 || ^18" + "engines": { + "node": ">=4" } }, - "node_modules/react-refresh": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", - "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "node_modules/postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.0" } }, - "node_modules/react-scripts": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", - "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", + "node_modules/postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.16.0", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@svgr/webpack": "^5.5.0", - "babel-jest": "^27.4.2", - "babel-loader": "^8.2.3", - "babel-plugin-named-asset-import": "^0.3.8", - "babel-preset-react-app": "^10.0.1", - "bfj": "^7.0.2", - "browserslist": "^4.18.1", - "camelcase": "^6.2.1", - "case-sensitive-paths-webpack-plugin": "^2.4.0", - "css-loader": "^6.5.1", - "css-minimizer-webpack-plugin": "^3.2.0", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "eslint": "^8.3.0", - "eslint-config-react-app": "^7.0.1", - "eslint-webpack-plugin": "^3.1.1", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "html-webpack-plugin": "^5.5.0", - "identity-obj-proxy": "^3.0.0", - "jest": "^27.4.3", - "jest-resolve": "^27.4.2", - "jest-watch-typeahead": "^1.0.0", - "mini-css-extract-plugin": "^2.4.5", - "postcss": "^8.4.4", - "postcss-flexbugs-fixes": "^5.0.2", - "postcss-loader": "^6.2.1", - "postcss-normalize": "^10.0.1", - "postcss-preset-env": "^7.0.1", - "prompts": "^2.4.2", - "react-app-polyfill": "^3.0.0", - "react-dev-utils": "^12.0.1", - "react-refresh": "^0.11.0", - "resolve": "^1.20.0", - "resolve-url-loader": "^4.0.0", - "sass-loader": "^12.3.0", - "semver": "^7.3.5", - "source-map-loader": "^3.0.0", - "style-loader": "^3.3.1", - "tailwindcss": "^3.0.2", - "terser-webpack-plugin": "^5.2.5", - "webpack": "^5.64.4", - "webpack-dev-server": "^4.6.0", - "webpack-manifest-plugin": "^4.0.2", - "workbox-webpack-plugin": "^6.4.1" - }, - "bin": { - "react-scripts": "bin/react-scripts.js" + "postcss": "^7.0.0" }, "engines": { - "node": ">=14.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - }, - "peerDependencies": { - "react": ">= 16", - "typescript": "^3.2.1 || ^4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/react-scripts/node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", + "node_modules/postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "postcss": "^7.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.9.0" } }, - "node_modules/react-scripts/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==", + "node_modules/postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "postcss": "^7.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6.9.0" } }, - "node_modules/react-scripts/node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", + "node_modules/postcss-double-position-gradients": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", + "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "node": ">=6.0.0" } }, - "node_modules/react-scripts/node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", + "node_modules/postcss-env-function": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", + "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6.0.0" } }, - "node_modules/react-scripts/node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", + "node_modules/postcss-flexbugs-fixes": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz", + "integrity": "sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ==", "dev": true, + "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "postcss": "^7.0.26" } }, - "node_modules/react-scripts/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/postcss-focus-visible": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", + "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "postcss": "^7.0.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6.0.0" } }, - "node_modules/react-scripts/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==", + "node_modules/postcss-focus-within": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", + "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "color-name": "~1.1.4" + "postcss": "^7.0.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.0.0" } }, - "node_modules/react-scripts/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/react-scripts/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==", + "node_modules/postcss-font-variant": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", + "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "postcss": "^7.0.2" } }, - "node_modules/react-scripts/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==", + "node_modules/postcss-gap-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", + "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", "dev": true, + "license": "CC0-1.0", + "dependencies": { + "postcss": "^7.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0.0" } }, - "node_modules/react-scripts/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==", + "node_modules/postcss-image-set-function": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", + "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "has-flag": "^4.0.0" + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/react-scripts/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==", + "node_modules/postcss-initial": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.4.tgz", + "integrity": "sha512-3RLn6DIpMsK1l5UUy9jxQvoDeUN4gP939tDcKUHD/kM8SGSKbFAnvkpFpj3Bhtz3HGk1jWY5ZNWX6mPta5M9fg==", "dev": true, + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "postcss": "^7.0.2" } }, - "node_modules/react-shallow-renderer": { - "version": "16.15.0", - "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", - "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", + "node_modules/postcss-lab-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", + "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "object-assign": "^4.1.1", - "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" }, - "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/react-test-renderer": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz", - "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==", + "node_modules/postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", "dev": true, + "license": "MIT", "dependencies": { - "react-is": "^18.2.0", - "react-shallow-renderer": "^16.15.0", - "scheduler": "^0.23.0" + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" }, - "peerDependencies": { - "react": "^18.2.0" + "engines": { + "node": ">= 4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "node_modules/react-test-renderer/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "node_modules/postcss-load-config/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dev": true, + "license": "MIT", "dependencies": { - "pify": "^2.3.0" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/postcss-load-config/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", "dev": true, + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">=4" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/postcss-load-config/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, + "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": ">=8.10.0" + "node": ">=4" } }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "node_modules/postcss-load-config/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, - "dependencies": { - "minimatch": "^3.0.5" - }, + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=4" } }, - "node_modules/redent": { + "node_modules/postcss-loader": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", "dev": true, + "license": "MIT", "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "node_modules/postcss-loader/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "node_modules/postcss-loader/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, + "license": "MIT", "dependencies": { - "regenerate": "^1.4.2" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=4.0.0" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "node_modules/postcss-loader/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.8.4" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" } }, - "node_modules/regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "node_modules/postcss-logical": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", + "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "postcss": "^7.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6.0.0" } }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "node_modules/postcss-media-minmax": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", + "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "postcss": "^7.0.2" }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "node_modules/postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", "dev": true, + "license": "MIT", "dependencies": { - "jsesc": "~0.5.0" + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" }, - "bin": { - "regjsparser": "bin/parser" + "engines": { + "node": ">=6.9.0" } }, - "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==", + "node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } + "license": "MIT" }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "node_modules/postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=6.9.0" } }, - "node_modules/renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, + "license": "MIT", "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "node_modules/postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.9.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==", + "node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "node_modules/postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", "dev": true, + "license": "MIT", "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", "dev": true, + "license": "MIT", "dependencies": { - "resolve-from": "^5.0.0" + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "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==", + "node_modules/postcss-minify-params/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/resolve-url-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", - "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "node_modules/postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", "dev": true, + "license": "MIT", "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^7.0.35", - "source-map": "0.6.1" + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" }, "engines": { - "node": ">=8.9" - }, - "peerDependencies": { - "rework": "1.0.1", - "rework-visit": "1.0.0" - }, - "peerDependenciesMeta": { - "rework": { - "optional": true - }, - "rework-visit": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/resolve-url-loader/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/resolve-url-loader/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, + "license": "MIT", "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=8" } }, - "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==", + "node_modules/postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", "dev": true, + "license": "ISC", + "dependencies": { + "postcss": "^7.0.5" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", + "node_modules/postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "node_modules/postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", "dev": true, + "license": "ISC", + "dependencies": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + }, "engines": { - "node": ">= 4" + "node": ">= 6" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "license": "ISC", + "dependencies": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/postcss-nesting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", + "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "postcss": "^7.0.2" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "node_modules/postcss-normalize": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz", + "integrity": "sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==", "dev": true, - "bin": { - "rollup": "dist/bin/rollup" + "license": "CC0-1.0", + "dependencies": { + "@csstools/normalize.css": "^10.1.0", + "browserslist": "^4.6.2", + "postcss": "^7.0.17", + "postcss-browser-comments": "^3.0.0", + "sanitize.css": "^10.0.0" }, "engines": { - "node": ">=10.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=8.0.0" } }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "node_modules/postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" + "postcss": "^7.0.0" }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, - "node_modules/rollup-plugin-terser/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/rollup-plugin-terser/node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "node_modules/postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">=6.9.0" } }, - "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } + "license": "MIT" }, - "node_modules/rollup-plugin-terser/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==", + "node_modules/postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=6.9.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==", + "node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } + "license": "MIT" }, - "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6.9.0" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "license": "MIT" }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "node_modules/postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sanitize.css": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", - "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", - "dev": true + "node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true, + "license": "MIT" }, - "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==", + "node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", "dev": true, + "license": "MIT", "dependencies": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - } + "node": ">=6.9.0" } }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true + "node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true, + "license": "MIT" }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "node_modules/postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", "dev": true, + "license": "MIT", "dependencies": { - "xmlchars": "^2.2.0" + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" } }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true, - "dependencies": { - "loose-envify": "^1.1.0" - } + "license": "MIT" }, - "node_modules/schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "node_modules/postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=6.9.0" } }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true + "node_modules/postcss-normalize-url/node_modules/normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", "dev": true, + "license": "MIT", "dependencies": { - "node-forge": "^1" + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" } }, - "node_modules/semantic-ui-css": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/semantic-ui-css/-/semantic-ui-css-2.5.0.tgz", - "integrity": "sha512-jIWn3WXXE2uSaWCcB+gVJVRG3masIKtTMNEP2X8Aw909H2rHpXGneYOxzO3hT8TpyvB5/dEEo9mBFCitGwoj1A==", + "node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true, + "license": "MIT" + }, + "node_modules/postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "license": "MIT", "dependencies": { - "jquery": "x.*" + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/semantic-ui-less": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/semantic-ui-less/-/semantic-ui-less-2.5.0.tgz", - "integrity": "sha512-Nlp8iR0otCQB74Yqob2Dxpsm5H9YAp3NvQ3sWDediwFjrd/l3Leu9md2O82UU5n5hOSqu95xnTok55eIAhlTjg==", + "node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-overflow-shorthand": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", + "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "jquery": "x.*" + "postcss": "^7.0.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/semantic-ui-react": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-2.1.4.tgz", - "integrity": "sha512-7CxjBoFUfH7fUvtn+SPkkIocthUD9kV3niF1mUMa9TbeyPAf2brtRCZBlT2OpHaXmkscFzGjEfhbJo9gKfotzQ==", + "node_modules/postcss-page-break": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", + "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.10.5", - "@fluentui/react-component-event-listener": "~0.63.0", - "@fluentui/react-component-ref": "~0.63.0", - "@popperjs/core": "^2.6.0", - "@semantic-ui-react/event-stack": "^3.1.3", - "clsx": "^1.1.1", - "keyboard-key": "^1.1.0", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "prop-types": "^15.7.2", - "react-is": "^16.8.6 || ^17.0.0 || ^18.0.0", - "react-popper": "^2.3.0", - "shallowequal": "^1.1.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "postcss": "^7.0.2" } }, - "node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "node_modules/postcss-place": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", + "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "lru-cache": "^6.0.0" + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" }, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/postcss-preset-env": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", + "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "autoprefixer": "^9.6.1", + "browserslist": "^4.6.4", + "caniuse-lite": "^1.0.30000981", + "css-blank-pseudo": "^0.1.4", + "css-has-pseudo": "^0.10.0", + "css-prefers-color-scheme": "^3.1.1", + "cssdb": "^4.4.0", + "postcss": "^7.0.17", + "postcss-attribute-case-insensitive": "^4.0.1", + "postcss-color-functional-notation": "^2.0.1", + "postcss-color-gray": "^5.0.0", + "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-mod-function": "^3.0.3", + "postcss-color-rebeccapurple": "^4.0.1", + "postcss-custom-media": "^7.0.8", + "postcss-custom-properties": "^8.0.11", + "postcss-custom-selectors": "^5.1.2", + "postcss-dir-pseudo-class": "^5.0.0", + "postcss-double-position-gradients": "^1.0.0", + "postcss-env-function": "^2.0.2", + "postcss-focus-visible": "^4.0.0", + "postcss-focus-within": "^3.0.0", + "postcss-font-variant": "^4.0.0", + "postcss-gap-properties": "^2.0.0", + "postcss-image-set-function": "^3.0.1", + "postcss-initial": "^3.0.0", + "postcss-lab-function": "^2.0.1", + "postcss-logical": "^3.0.0", + "postcss-media-minmax": "^4.0.0", + "postcss-nesting": "^7.0.0", + "postcss-overflow-shorthand": "^2.0.0", + "postcss-page-break": "^2.0.0", + "postcss-place": "^4.0.1", + "postcss-pseudo-class-any-link": "^6.0.0", + "postcss-replace-overflow-wrap": "^3.0.0", + "postcss-selector-matches": "^4.0.0", + "postcss-selector-not": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=6.0.0" } }, - "node_modules/semver/node_modules/lru-cache": { + "node_modules/postcss-pseudo-class-any-link": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", + "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", "dev": true, + "license": "CC0-1.0", "dependencies": { - "yallist": "^4.0.0" + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" }, "engines": { - "node": ">=10" + "node": ">=6.0.0" } }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "node_modules/postcss-pseudo-class-any-link/node_modules/cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", "dev": true, - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">= 0.8.0" + "node": ">=4" } }, - "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==", + "node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "node_modules/postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", "dev": true, + "license": "MIT", "dependencies": { - "randombytes": "^2.1.0" + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.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==", + "node_modules/postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", "dev": true, + "license": "MIT", "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=6.9.0" } }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", + "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "postcss": "^7.0.2" } }, - "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==", + "node_modules/postcss-safe-parser": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-5.0.2.tgz", + "integrity": "sha512-jDUfCPJbKOABhwpUKcqCVbbXiloe/QXMcbJ6Iipf3sDIihEzTqRCeMBfRaOHxhBuTYqtASrI1KJWxzztZU4qUQ==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^8.1.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "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==", + "node_modules/postcss-safe-parser/node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">= 0.6" + "node": "^10 || ^12 || >=14" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/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==", + "node_modules/postcss-selector-matches": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", + "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", "dev": true, - "engines": { - "node": ">= 0.6" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" } }, - "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==", + "node_modules/postcss-selector-not": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.1.tgz", + "integrity": "sha512-YolvBgInEK5/79C+bdFMyzqTg6pkYqDbzZIST/PDMqa/o3qtXenD05apBG2jLgT0/BQ77d4U2UK12jWpilqMAQ==", "dev": true, + "license": "MIT", "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" } }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", - "dev": true - }, - "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==", + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, + "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "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==", + "node_modules/postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "node_modules/postcss-svgo/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "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==", + "node_modules/postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "node_modules/postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", "dev": true, + "license": "MIT", "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=6.14.4" } }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true + "node_modules/postcss/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true, + "license": "ISC" }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "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": ">= 8" + "node": ">= 0.8.0" } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "node_modules/prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", - "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "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, - "dependencies": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.1" - }, + "license": "MIT", "engines": { - "node": ">= 12.13.0" + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/pretty-error": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", "dev": true, + "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "lodash": "^4.17.20", + "renderkid": "^2.0.4" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=6.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", - "dev": true + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT" }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.6.0" } }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "dev": true - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "dev": true, - "engines": { - "node": ">= 0.8" + "license": "MIT", + "dependencies": { + "asap": "~2.0.6" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, + "license": "MIT", "dependencies": { - "internal-slot": "^1.0.4" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": ">= 0.4" + "node": ">= 6" } }, - "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==", + "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": { - "safe-buffer": "~5.2.0" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "node_modules/property-expr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-natural-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", - "dev": true + "license": "MIT", + "peer": true }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "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": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, "engines": { - "node": ">=8" + "node": ">= 0.10" } }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true, + "license": "MIT", + "peer": true }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "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, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" + "punycode": "^2.3.1" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/lupomontero" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, + "license": "MIT", "dependencies": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" - }, - "engines": { - "node": ">=4" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "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==", + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, - "engines": { - "node": ">=8" + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6" } }, - "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==", + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.6.0", + "teleport": ">=0.2.0" } }, - "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==", + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "min-indent": "^1.0.0" + "side-channel": "^1.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/query-string": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/style-loader": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.2.tgz", - "integrity": "sha512-RHs/vcrKdQK8wZliteNK4NKzxvLBzpuHMqYmUVWeKa6MkaIQ97ZTOS0b+zapZhy6GcrgWnvWYCMHRirC3FsUmw==", + "node_modules/querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "dev": true, + "license": "MIT", "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "node": ">=0.4.x" } }, - "node_modules/stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" - }, "engines": { - "node": "^10 || ^12 || >=14.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.4.x" } }, - "node_modules/sucrase": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", - "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==", + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, - "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=8" + "performance-now": "^2.1.0" } }, - "node_modules/sucrase/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "engines": { - "node": ">= 6" + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" } }, - "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.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==", + "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, - "dependencies": { - "has-flag": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/react-app-polyfill": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-2.0.0.tgz", + "integrity": "sha512-0sF4ny9v/B7s6aoehwze9vJNWcmCemAUYBVasscVr92+UYiEqDXOxfKjXN685mDaMRNF3WdhHQs76oTODMocFA==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "core-js": "^3.6.5", + "object-assign": "^4.1.1", + "promise": "^8.1.0", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "whatwg-fetch": "^3.4.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "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==", + "node_modules/react-app-polyfill/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true, - "engines": { - "node": ">= 0.4" + "license": "MIT" + }, + "node_modules/react-dev-utils": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-11.0.4.tgz", + "integrity": "sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "7.10.4", + "address": "1.1.2", + "browserslist": "4.14.2", + "chalk": "2.4.2", + "cross-spawn": "7.0.3", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "2.0.0", + "filesize": "6.1.0", + "find-up": "4.1.0", + "fork-ts-checker-webpack-plugin": "4.1.6", + "global-modules": "2.0.0", + "globby": "11.0.1", + "gzip-size": "5.1.1", + "immer": "8.0.1", + "is-root": "2.1.0", + "loader-utils": "2.0.0", + "open": "^7.0.2", + "pkg-up": "3.1.0", + "prompts": "2.4.0", + "react-error-overlay": "^6.0.9", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "strip-ansi": "6.0.0", + "text-table": "0.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "node_modules/svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", - "dev": true - }, - "node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "node_modules/react-dev-utils/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" + "@babel/highlight": "^7.10.4" } }, - "node_modules/svgo/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "node_modules/react-dev-utils/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": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/svgo/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "node_modules/react-dev-utils/node_modules/browserslist": { + "version": "4.14.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz", + "integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==", "dev": true, + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001125", + "electron-to-chromium": "^1.3.564", + "escalade": "^3.0.2", + "node-releases": "^1.1.61" + }, + "bin": { + "browserslist": "cli.js" + }, "engines": { - "node": ">= 6" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" } }, - "node_modules/svgo/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==", + "node_modules/react-dev-utils/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": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/svgo/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "node_modules/react-dev-utils/node_modules/chalk/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, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "license": "MIT", + "engines": { + "node": ">=0.8.0" } }, - "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "node_modules/svgo/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "node_modules/react-dev-utils/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": { - "boolbase": "~1.0.0" + "color-name": "1.1.3" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "node_modules/react-dev-utils/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" }, - "node_modules/tailwindcss": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", - "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==", + "node_modules/react-dev-utils/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": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.18.2", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - }, - "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/temp-dir": { + "node_modules/react-dev-utils/node_modules/escape-string-regexp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "node_modules/react-dev-utils/node_modules/globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" }, "engines": { "node": ">=10" @@ -18522,16482 +21382,8874 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tempy/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "node_modules/react-dev-utils/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": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.9.0" } }, - "node_modules/terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "node_modules/react-dev-utils/node_modules/node-releases": { + "version": "1.1.77", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", + "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-dev-utils/node_modules/prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "node_modules/react-dev-utils/node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" + "ansi-regex": "^5.0.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } + "node": ">=8" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/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==", + "node_modules/react-dev-utils/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": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "node_modules/react-dnd": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-11.1.3.tgz", + "integrity": "sha512-8rtzzT8iwHgdSC89VktwhqdKKtfXaAyC4wiqp0SywpHG12TTLvfOoL6xNEIUWXwIEWu+CFfDn4GZJyynCEuHIQ==", "dev": true, "dependencies": { - "any-promise": "^1.0.0" + "@react-dnd/shallowequal": "^2.0.0", + "@types/hoist-non-react-statics": "^3.3.1", + "dnd-core": "^11.1.3", + "hoist-non-react-statics": "^3.3.0" + }, + "peerDependencies": { + "react": ">= 16.9.0", + "react-dom": ">= 16.9.0" } }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "node_modules/react-dnd-html5-backend": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-11.1.3.tgz", + "integrity": "sha512-/1FjNlJbW/ivkUxlxQd7o3trA5DE33QiRZgxent3zKme8DwF4Nbw3OFVhTRFGaYhHFNL1rZt6Rdj1D78BjnNLw==", "dev": true, "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" + "dnd-core": "^11.1.3" } }, - "node_modules/throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true - }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "node_modules/tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", - "dev": true - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", "dev": true, - "engines": { - "node": ">=4" + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" } }, - "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==", + "node_modules/react-dropzone": { + "version": "11.7.1", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.7.1.tgz", + "integrity": "sha512-zxCMwhfPy1olUEbw3FLNPLhAm/HnaYH5aELIEglRbqabizKAdHs0h+WuyOpmA+v1JXn0++fpQDdNfUagWt5hJQ==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "attr-accept": "^2.2.2", + "file-selector": "^0.4.0", + "prop-types": "^15.8.1" }, "engines": { - "node": ">=8.0" + "node": ">= 10.13" + }, + "peerDependencies": { + "react": ">= 16.8" } }, - "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==", + "node_modules/react-error-overlay": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.1.0.tgz", + "integrity": "sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==", "dev": true, - "engines": { - "node": ">=0.6" - } + "license": "MIT" }, - "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "node_modules/react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-i18next": { + "version": "11.18.6", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz", + "integrity": "sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA==", "dev": true, + "license": "MIT", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "@babel/runtime": "^7.14.5", + "html-parse-stringify": "^3.0.1" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "i18next": ">= 19.0.0", + "react": ">= 16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } } }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "node_modules/react-invenio-forms": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/react-invenio-forms/-/react-invenio-forms-4.8.2.tgz", + "integrity": "sha512-QcvMaxguceeXsEuhvun5GntFjMSQeT2VAubZ4Jn4HrE8fMo4s/cMomsjRW1mUkqga1XMinpQjA9zTX7c8QBHJg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" + "node": ">=16.0.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@babel/runtime": "^7.26.10", + "@semantic-ui-react/css-patch": "^1.0.0", + "@tinymce/tinymce-react": "^4.3.0", + "axios": "^1.8.2", + "formik": "^2.1.0", + "lodash": "^4.17.0", + "luxon": "^1.23.0", + "query-string": "^7.0.0", + "react": "^16.13.0", + "react-dom": "^16.13.0", + "react-overridable": "^0.0.3", + "semantic-ui-css": "^2.4.0", + "semantic-ui-react": "^2.1.0", + "tinymce": "^6.7.2", + "yup": "^0.32.11" } }, - "node_modules/tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "node_modules/react-overridable": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/react-overridable/-/react-overridable-0.0.3.tgz", + "integrity": "sha512-BlDKflgyXDAbSO1xST2gXw5ZYAnVoazhaOodzgQAFbtS6r2+qJGMfz3WQblrLWR57Tu7KYT2mKZ6a1o/zdAzKw==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "@babel/runtime": "^7.9.0", + "prop-types": "^15.7.0", + "react": "^16.13.0" + } }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "node_modules/react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", "dev": true, + "license": "MIT", "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "react": "^16.8.0 || ^17 || ^18", + "react-dom": "^16.8.0 || ^17 || ^18" } }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "node_modules/react-popper/node_modules/react-fast-compare": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-redux": { + "version": "7.2.9", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", "dev": true, "dependencies": { - "minimist": "^1.2.0" + "@babel/runtime": "^7.15.4", + "@types/react-redux": "^7.1.20", + "hoist-non-react-statics": "^3.3.2", + "loose-envify": "^1.4.0", + "prop-types": "^15.7.2", + "react-is": "^17.0.2" }, - "bin": { - "json5": "lib/cli.js" + "peerDependencies": { + "react": "^16.8.3 || ^17 || ^18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } } }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/react-redux/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", + "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" + "node_modules/react-scripts": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.3.tgz", + "integrity": "sha512-S5eO4vjUzUisvkIPB7jVsKtuH2HhWcASREYWHAQ1FP5HyCv3xgn+wpILAEWkmy+A+tTNbSZClhxjT3qz6g4L1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "7.12.3", + "@pmmmwh/react-refresh-webpack-plugin": "0.4.3", + "@svgr/webpack": "5.5.0", + "@typescript-eslint/eslint-plugin": "^4.5.0", + "@typescript-eslint/parser": "^4.5.0", + "babel-eslint": "^10.1.0", + "babel-jest": "^26.6.0", + "babel-loader": "8.1.0", + "babel-plugin-named-asset-import": "^0.3.7", + "babel-preset-react-app": "^10.0.0", + "bfj": "^7.0.2", + "camelcase": "^6.1.0", + "case-sensitive-paths-webpack-plugin": "2.3.0", + "css-loader": "4.3.0", + "dotenv": "8.2.0", + "dotenv-expand": "5.1.0", + "eslint": "^7.11.0", + "eslint-config-react-app": "^6.0.0", + "eslint-plugin-flowtype": "^5.2.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jest": "^24.1.0", + "eslint-plugin-jsx-a11y": "^6.3.1", + "eslint-plugin-react": "^7.21.5", + "eslint-plugin-react-hooks": "^4.2.0", + "eslint-plugin-testing-library": "^3.9.2", + "eslint-webpack-plugin": "^2.5.2", + "file-loader": "6.1.1", + "fs-extra": "^9.0.1", + "html-webpack-plugin": "4.5.0", + "identity-obj-proxy": "3.0.0", + "jest": "26.6.0", + "jest-circus": "26.6.0", + "jest-resolve": "26.6.0", + "jest-watch-typeahead": "0.6.1", + "mini-css-extract-plugin": "0.11.3", + "optimize-css-assets-webpack-plugin": "5.0.4", + "pnp-webpack-plugin": "1.6.4", + "postcss-flexbugs-fixes": "4.2.1", + "postcss-loader": "3.0.0", + "postcss-normalize": "8.0.1", + "postcss-preset-env": "6.7.0", + "postcss-safe-parser": "5.0.2", + "prompts": "2.4.0", + "react-app-polyfill": "^2.0.0", + "react-dev-utils": "^11.0.3", + "react-refresh": "^0.8.3", + "resolve": "1.18.1", + "resolve-url-loader": "^3.1.2", + "sass-loader": "^10.0.5", + "semver": "7.3.2", + "style-loader": "1.3.0", + "terser-webpack-plugin": "4.2.3", + "ts-pnp": "1.2.0", + "url-loader": "4.1.1", + "webpack": "4.44.2", + "webpack-dev-server": "3.11.1", + "webpack-manifest-plugin": "2.2.0", + "workbox-webpack-plugin": "5.1.4" + }, + "bin": { + "react-scripts": "bin/react-scripts.js" }, "engines": { - "node": ">= 6" + "node": "^10.12.0 || >=12.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.1.3" }, "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "react": ">= 16", + "typescript": "^3.2.1 || ^4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/react-scripts/node_modules/@babel/core": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", + "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", "dev": true, + "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1" + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.1", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.1", + "@babel/parser": "^7.12.3", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "node_modules/react-scripts/node_modules/@babel/core/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/react-scripts/node_modules/@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, "engines": { - "node": ">=4" + "node": ">= 10.14.2" } }, - "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==", + "node_modules/react-scripts/node_modules/@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=10" + "node": ">= 10.14.2" + } + }, + "node_modules/react-scripts/node_modules/@jest/core/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 10.14.2" } }, - "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==", + "node_modules/react-scripts/node_modules/@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", "dev": true, + "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" }, "engines": { - "node": ">= 0.6" + "node": ">= 10.14.2" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "node_modules/react-scripts/node_modules/@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 10.14.2" } }, - "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==", + "node_modules/react-scripts/node_modules/@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", "dev": true, + "license": "MIT", "dependencies": { - "is-typedarray": "^1.0.0" + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "node_modules/react-scripts/node_modules/@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" }, "engines": { - "node": ">=4.2.0" + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "node-notifier": "^8.0.0" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "node_modules/react-scripts/node_modules/@jest/reporters/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 10.14.2" } }, - "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==", + "node_modules/react-scripts/node_modules/@jest/reporters/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": ">=4" + "node": ">=0.10.0" } }, - "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==", + "node_modules/react-scripts/node_modules/@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", "dev": true, + "license": "MIT", "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" }, "engines": { - "node": ">=4" + "node": ">= 10.14.2" } }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "node_modules/react-scripts/node_modules/@jest/source-map/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": ">=4" + "node": ">=0.10.0" } }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "node_modules/react-scripts/node_modules/@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, "engines": { - "node": ">=4" + "node": ">= 10.14.2" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "node_modules/react-scripts/node_modules/@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", "dev": true, + "license": "MIT", "dependencies": { - "crypto-random-string": "^2.0.0" + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" }, "engines": { - "node": ">=8" + "node": ">= 10.14.2" } }, - "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/react-scripts/node_modules/@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">= 10.14.2" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "node_modules/react-scripts/node_modules/@jest/transform/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.8" + "node": ">=0.10.0" } }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", - "dev": true - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "node_modules/react-scripts/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, "engines": { - "node": ">=4", - "yarn": "*" + "node": ">= 10.14.2" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "node_modules/react-scripts/node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz", + "integrity": "sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "ansi-html": "^0.0.7", + "error-stack-parser": "^2.0.6", + "html-entities": "^1.2.1", + "native-url": "^0.2.6", + "schema-utils": "^2.6.5", + "source-map": "^0.7.3" }, - "bin": { - "update-browserslist-db": "cli.js" + "engines": { + "node": ">= 10.x" }, "peerDependencies": { - "browserslist": ">= 4.21.0" + "@types/webpack": "4.x", + "react-refresh": ">=0.8.3 <0.10.0", + "sockjs-client": "^1.4.0", + "type-fest": "^0.13.1", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/react-scripts/node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/react-scripts/node_modules/@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "punycode": "^2.1.0" + "@sinonjs/commons": "^1.7.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "node_modules/react-scripts/node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", "dev": true, + "license": "MIT", "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "@types/yargs-parser": "*" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "node_modules/react-scripts/node_modules/babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "node_modules/react-scripts/node_modules/babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", "dev": true, + "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">=10.12.0" + "node": ">= 10.14.2" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "node_modules/react-scripts/node_modules/babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "node_modules/react-scripts/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "node_modules/react-scripts/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": { - "xml-name-validator": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "node_modules/react-scripts/node_modules/cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } + "license": "MIT" }, - "node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "node_modules/react-scripts/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": { - "loose-envify": "^1.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.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==", + "node_modules/react-scripts/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } + "license": "MIT" }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "node_modules/react-scripts/node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "node_modules/react-scripts/node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10.4" + "node": ">= 10.14.2" } }, - "node_modules/webpack": { - "version": "5.81.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", - "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.13.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, + "node_modules/react-scripts/node_modules/emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10.13.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "node_modules/react-scripts/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": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/react-scripts/node_modules/expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/react-scripts/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": { - "fast-deep-equal": "^3.1.3" + "pump": "^3.0.0" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "node_modules/react-scripts/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/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "node_modules/react-scripts/node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=8" } }, - "node_modules/webpack-dev-server": { - "version": "4.13.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.13.3.tgz", - "integrity": "sha512-KqqzrzMRSRy5ePz10VhjyL27K2dxqwXQLP5rAKwRJBPUahe7Z2bBWzHw37jeb8GCPKxZRO79ZdQUAPesMh/Nug==", - "dev": true, - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.13.0" + "node_modules/react-scripts/node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/react-scripts/node_modules/jest": { + "version": "26.6.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.0.tgz", + "integrity": "sha512-jxTmrvuecVISvKFFhOkjsWRZV7sFqdSUAd1ajOKY+/QE/aLBVstsJ/dX8GczLzwiT6ZEwwmZqtCUHLHHQVzcfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^26.6.0", + "import-local": "^3.0.2", + "jest-cli": "^26.6.0" }, "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" + "jest": "bin/jest.js" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-cli": { - "optional": true - } + "node": ">= 10.14.2" } }, - "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/react-scripts/node_modules/jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/react-scripts/node_modules/jest-circus": { + "version": "26.6.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.0.tgz", + "integrity": "sha512-L2/Y9szN6FJPWFK8kzWXwfp+FOR7xq0cUL4lIsdbIdwz3Vh6P1nrpcqOleSzr28zOtSHQNV9Z7Tl+KkuK7t5Ng==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3" + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.0", + "@jest/test-result": "^26.6.0", + "@jest/types": "^26.6.0", + "@types/babel__traverse": "^7.0.4", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^26.6.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.0", + "jest-matcher-utils": "^26.6.0", + "jest-message-util": "^26.6.0", + "jest-runner": "^26.6.0", + "jest-runtime": "^26.6.0", + "jest-snapshot": "^26.6.0", + "jest-util": "^26.6.0", + "pretty-format": "^26.6.0", + "stack-utils": "^2.0.2", + "throat": "^5.0.0" }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "node_modules/react-scripts/node_modules/jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" }, - "engines": { - "node": ">= 12.13.0" + "bin": { + "jest": "bin/jest.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "node_modules/react-scripts/node_modules/jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, "engines": { - "node": ">=10.0.0" + "node": ">= 10.14.2" }, "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { + "ts-node": { "optional": true } } }, - "node_modules/webpack-manifest-plugin": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", - "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", + "node_modules/react-scripts/node_modules/jest-config/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", "dev": true, + "license": "MIT", "dependencies": { - "tapable": "^2.0.0", - "webpack-sources": "^2.2.0" - }, - "engines": { - "node": ">=12.22.0" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" }, - "peerDependencies": { - "webpack": "^4.44.2 || ^5.47.0" - } - }, - "node_modules/webpack-manifest-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 10.14.2" } }, - "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", + "node_modules/react-scripts/node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", "dev": true, + "license": "MIT", "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, "engines": { - "node": ">=10.13.0" + "node": ">= 10.14.2" } }, - "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==", + "node_modules/react-scripts/node_modules/jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, "engines": { - "node": ">=10.13.0" + "node": ">= 10.14.2" } }, - "node_modules/webpack/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==", + "node_modules/react-scripts/node_modules/jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", "dev": true, + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" }, "engines": { - "node": ">=8.0.0" + "node": ">= 10.14.2" } }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/react-scripts/node_modules/jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + }, "engines": { - "node": ">=4.0" + "node": ">= 10.14.2" } }, - "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==", + "node_modules/react-scripts/node_modules/jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", "dev": true, + "license": "MIT", "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" }, "engines": { - "node": ">=0.8.0" + "node": ">= 10.14.2" } }, - "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==", + "node_modules/react-scripts/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" + "node": ">= 10.14.2" } }, - "node_modules/whatwg-encoding/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==", + "node_modules/react-scripts/node_modules/jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", "dev": true, + "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" } }, - "node_modules/whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", - "dev": true - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "node_modules/react-scripts/node_modules/jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", "dev": true, + "license": "MIT", "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">= 10.14.2" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/react-scripts/node_modules/jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, "engines": { - "node": ">= 8" + "node": ">= 10.14.2" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "node_modules/react-scripts/node_modules/jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", "dev": true, + "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "node_modules/react-scripts/node_modules/jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", "dev": true, + "license": "MIT", "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "node_modules/react-scripts/node_modules/jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", "dev": true, + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "@jest/types": "^26.6.2", + "@types/node": "*" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 10.14.2" } }, - "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==", + "node_modules/react-scripts/node_modules/jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 10.14.2" } }, - "node_modules/workbox-background-sync": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz", - "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==", + "node_modules/react-scripts/node_modules/jest-resolve": { + "version": "26.6.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.0.tgz", + "integrity": "sha512-tRAz2bwraHufNp+CCmAD8ciyCpXCs1NQxB5EJAmtCFy6BN81loFEGWKzYu26Y62lAJJe4X4jg36Kf+NsQyiStQ==", "dev": true, + "license": "MIT", "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" + "@jest/types": "^26.6.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.0", + "read-pkg-up": "^7.0.1", + "resolve": "^1.17.0", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/workbox-broadcast-update": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz", - "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==", + "node_modules/react-scripts/node_modules/jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", "dev": true, + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4" - } - }, - "node_modules/workbox-build": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz", - "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==", - "dev": true, - "dependencies": { - "@apideck/better-ajv-errors": "^0.3.1", - "@babel/core": "^7.11.1", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", - "ajv": "^8.6.0", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "lodash": "^4.17.20", - "pretty-bytes": "^5.3.0", - "rollup": "^2.43.1", - "rollup-plugin-terser": "^7.0.0", - "source-map": "^0.8.0-beta.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "6.5.4", - "workbox-broadcast-update": "6.5.4", - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-google-analytics": "6.5.4", - "workbox-navigation-preload": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-range-requests": "6.5.4", - "workbox-recipes": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4", - "workbox-streams": "6.5.4", - "workbox-sw": "6.5.4", - "workbox-window": "6.5.4" + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" }, "engines": { - "node": ">=10.0.0" + "node": ">= 10.14.2" } }, - "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", - "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "node_modules/react-scripts/node_modules/jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", "dev": true, + "license": "MIT", "dependencies": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "ajv": ">=8" + "node": ">= 10.14.2" } }, - "node_modules/workbox-build/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/react-scripts/node_modules/jest-runner/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/workbox-build/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==", + "node_modules/react-scripts/node_modules/jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", "dev": true, + "license": "MIT", "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" }, "engines": { - "node": ">=10" + "node": ">= 10.14.2" } }, - "node_modules/workbox-build/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/workbox-build/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==", + "node_modules/react-scripts/node_modules/jest-runtime/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", "dev": true, + "license": "MIT", "dependencies": { - "whatwg-url": "^7.0.0" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": ">= 10.14.2" } }, - "node_modules/workbox-build/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "node_modules/react-scripts/node_modules/jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", "dev": true, + "license": "MIT", "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/workbox-build/node_modules/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 + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": ">= 10.14.2" + } }, - "node_modules/workbox-build/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==", + "node_modules/react-scripts/node_modules/jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", "dev": true, + "license": "MIT", "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/workbox-cacheable-response": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz", - "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==", + "node_modules/react-scripts/node_modules/jest-snapshot/node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", "dev": true, + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4" + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/workbox-core": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz", - "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==", - "dev": true - }, - "node_modules/workbox-expiration": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", - "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", + "node_modules/react-scripts/node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", "dev": true, + "license": "MIT", "dependencies": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/workbox-google-analytics": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz", - "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==", + "node_modules/react-scripts/node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", "dev": true, + "license": "MIT", "dependencies": { - "workbox-background-sync": "6.5.4", - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/workbox-navigation-preload": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz", - "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==", + "node_modules/react-scripts/node_modules/jest-watch-typeahead": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.6.1.tgz", + "integrity": "sha512-ITVnHhj3Jd/QkqQcTqZfRgjfyRhDFM/auzgVo2RKvSwi18YMvh0WvXDJFoFED6c7jd/5jxtu4kSOb9PTu2cPVg==", "dev": true, + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4" + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^26.0.0", + "jest-watcher": "^26.3.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "jest": "^26.0.0" } }, - "node_modules/workbox-precaching": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", - "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", + "node_modules/react-scripts/node_modules/jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", "dev": true, + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/workbox-range-requests": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz", - "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==", + "node_modules/react-scripts/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/workbox-recipes": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", - "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", + "node_modules/react-scripts/node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", "dev": true, + "license": "MIT", "dependencies": { - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" } }, - "node_modules/workbox-routing": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", - "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", + "node_modules/react-scripts/node_modules/prompts": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", "dev": true, + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/workbox-strategies": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", - "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", + "node_modules/react-scripts/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true, - "dependencies": { - "workbox-core": "6.5.4" - } + "license": "MIT" }, - "node_modules/workbox-streams": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", - "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", + "node_modules/react-scripts/node_modules/resolve": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", + "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", "dev": true, + "license": "MIT", "dependencies": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4" + "is-core-module": "^2.0.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/workbox-sw": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz", - "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==", - "dev": true - }, - "node_modules/workbox-webpack-plugin": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz", - "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==", + "node_modules/react-scripts/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", "dev": true, - "dependencies": { - "fast-json-stable-stringify": "^2.1.0", - "pretty-bytes": "^5.4.1", - "upath": "^1.2.0", - "webpack-sources": "^1.4.3", - "workbox-build": "6.5.4" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "webpack": "^4.4.0 || ^5.9.0" + "node": ">=10" } }, - "node_modules/workbox-webpack-plugin/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==", + "node_modules/react-scripts/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/workbox-webpack-plugin/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "node_modules/react-scripts/node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "license": "MIT" + }, + "node_modules/react-scripts/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/workbox-window": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", - "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", + "node_modules/react-scripts/node_modules/v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", "dev": true, + "license": "ISC", "dependencies": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "6.5.4" + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.10.0" } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/react-scripts/node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/react-scripts/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", "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, - "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==", + "node_modules/react-scripts/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": { - "color-convert": "^2.0.1" + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/react-scripts/node_modules/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, + "license": "ISC" + }, + "node_modules/react-scripts/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", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/react-scripts/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": { - "color-name": "~1.1.4" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6" } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "node_modules/react-scripts/node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6" } }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "node_modules/react-searchkit": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-searchkit/-/react-searchkit-3.0.0.tgz", + "integrity": "sha512-f7OIsg0ZHsrD5AG52SQDrK0xG4Tj+lXqJ0nsRHf5q1mZD9GMyIINrPzzxBVS4oXtpbrn9Rit9ifPx0ELxuqCHw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8.3.0" + "node": ">=14.0.0" }, "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "@babel/runtime": "^7.9.0", + "axios": "^1.7.7", + "lodash": "^4.17.0", + "qs": "^6.8.0", + "react": "^16.13.0", + "react-dom": "^16.13.0", + "react-overridable": "^0.0.3", + "react-redux": "^7.2.0", + "redux": "^4.0.0", + "redux-thunk": "^2.3.0", + "semantic-ui-css": "^2.5.0", + "semantic-ui-react": "^2.1.0" } }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "node_modules/react-test-renderer": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.14.0.tgz", + "integrity": "sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "react-is": "^16.8.6", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "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", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "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": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "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": ">=10" + "node": ">=8" } }, - "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==", + "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": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } - } - }, - "dependencies": { - "@adobe/css-tools": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz", - "integrity": "sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==", - "dev": true - }, - "@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true }, - "@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } + "license": "MIT" }, - "@babel/compat-data": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", - "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", - "dev": true + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" }, - "@babel/core": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", - "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.4", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.4", - "@babel/types": "^7.21.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, + "license": "MIT", "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 - } + "safe-buffer": "~5.1.0" } }, - "@babel/eslint-parser": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.21.3.tgz", - "integrity": "sha512-kfhmPimwo6k4P8zxNs8+T7yR44q1LdpsZdE1NkCsVlfiuTPRfnGgjaF8Qgug9q9Pou17u6wneYF0lDCZJATMFg==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "requires": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, + "license": "MIT", + "optional": true, "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 - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "@babel/generator": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", - "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "node_modules/recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", "dev": true, - "requires": { - "@babel/types": "^7.21.4", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "license": "MIT", + "dependencies": { + "minimatch": "3.0.4" + }, + "engines": { + "node": ">=0.10.0" } }, - "@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==", + "node_modules/recursive-readdir/node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "requires": { - "@babel/types": "^7.18.6" + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/helper-compilation-targets": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", - "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", + "node_modules/redux": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", "dev": true, - "requires": { - "@babel/compat-data": "^7.21.4", - "@babel/helper-validator-option": "^7.21.0", - "browserslist": "^4.21.3", - "lru-cache": "^5.1.1", - "semver": "^6.3.0" - }, "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } + "@babel/runtime": "^7.9.2" } }, - "@babel/helper-create-class-features-plugin": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz", - "integrity": "sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==", + "node_modules/redux-thunk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.2.tgz", + "integrity": "sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-member-expression-to-functions": "^7.21.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/helper-split-export-declaration": "^7.18.6" + "peerDependencies": { + "redux": "^4" } }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz", - "integrity": "sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==", + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.3.1" + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", + "dev": true, + "license": "MIT", "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 - } + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" } }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } + "license": "MIT" }, - "@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, - "requires": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" } }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, - "requires": { - "@babel/types": "^7.18.6" + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/helper-member-expression-to-functions": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", - "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", + "node_modules/regex-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.1.tgz", + "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", "dev": true, - "requires": { - "@babel/types": "^7.21.0" - } + "license": "MIT" }, - "@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, - "requires": { - "@babel/types": "^7.21.4" + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/helper-module-transforms": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", - "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "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, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "node_modules/regexpu-core": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, - "requires": { - "@babel/types": "^7.18.6" + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, - "@babel/helper-plugin-utils": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" }, - "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "node_modules/regjsparser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.0.2" + }, + "bin": { + "regjsparser": "bin/parser" } }, - "@babel/helper-replace-supers": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", - "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, - "@babel/helper-simple-access": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, - "requires": { - "@babel/types": "^7.20.2" + "license": "MIT", + "engines": { + "node": ">= 0.10" } }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", "dev": true, - "requires": { - "@babel/types": "^7.20.0" - } + "license": "ISC" }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "node_modules/renderkid": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", + "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", "dev": true, - "requires": { - "@babel/types": "^7.18.6" + "license": "MIT", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" } }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", - "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "node_modules/renderkid/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, - "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "@babel/helpers": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", - "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "node_modules/renderkid/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, - "requires": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.0", - "@babel/types": "^7.21.0" + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "@babel/parser": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", - "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", - "dev": true - }, - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "engines": { + "node": ">=0.10" } }, - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", - "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "node_modules/replace-ext": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-2.0.0.tgz", + "integrity": "sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" + "license": "MIT", + "engines": { + "node": ">= 10" } }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "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, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", - "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } + "license": "ISC" }, - "@babel/plugin-proposal-decorators": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz", - "integrity": "sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w==", + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/plugin-syntax-decorators": "^7.21.0" - } + "license": "MIT" }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", - "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "node_modules/resolve-options": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-2.0.0.tgz", + "integrity": "sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "license": "MIT", + "dependencies": { + "value-or-function": "^4.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "license": "MIT" + }, + "node_modules/resolve-url-loader": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.5.tgz", + "integrity": "sha512-mgFMCmrV/tA4738EsFmPFE5/MaqSgUMe8LK971kVEKA/RrNVb7+VqFsg/qmKyythf34eyq476qIobP/gfFBGSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "adjust-sourcemap-loader": "3.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "^1.2.3", + "postcss": "7.0.36", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=6.0.0" } }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "node_modules/resolve-url-loader/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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "node_modules/resolve-url-loader/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, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "node_modules/resolve-url-loader/node_modules/chalk/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, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "node_modules/resolve-url-loader/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, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" } }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "node_modules/resolve-url-loader/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } + "license": "MIT" }, - "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", - "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", + "node_modules/resolve-url-loader/node_modules/convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.1" } }, - "@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==", + "node_modules/resolve-url-loader/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, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "engines": { + "node": ">=0.8.0" } }, - "@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==", + "node_modules/resolve-url-loader/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, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "node_modules/resolve-url-loader/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "@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==", + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" } }, - "@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==", + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.36", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" } }, - "@babel/plugin-syntax-decorators": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz", - "integrity": "sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==", + "node_modules/resolve-url-loader/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } + "license": "MIT" }, - "@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==", + "node_modules/resolve-url-loader/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "@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==", + "node_modules/resolve.exports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", + "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "license": "MIT", + "engines": { + "node": ">=10" } }, - "@babel/plugin-syntax-flow": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz", - "integrity": "sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==", + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "license": "MIT", + "engines": { + "node": ">=0.12" } }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "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, - "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "license": "MIT", + "engines": { + "node": ">= 4" } }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "dependencies": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" } }, - "@babel/plugin-syntax-jsx": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", - "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", + "node_modules/rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha512-W6V2fix7nCLUYX1v6eGPrBOZlc03/faqzP4sUxMAJMBMOPYhfV/RyLegTufn5gJKaOITyi+gvf0LXDZ9NzkHnQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" - } + "license": "MIT" }, - "@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==", + "node_modules/rework/node_modules/convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } + "license": "MIT" }, - "@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==", + "node_modules/rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } + "license": "MIT" }, - "@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==", + "node_modules/rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } + "license": "MIT" }, - "@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==", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "@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==", + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, - "@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==", + "node_modules/rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + }, + "bin": { + "rollup": "dist/bin/rollup" } }, - "@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==", + "node_modules/rollup-plugin-babel": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", + "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-babel.", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + }, + "peerDependencies": { + "@babel/core": "7 || ^7.0.0-rc.2", + "rollup": ">=0.60.0 <3" } }, - "@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==", + "node_modules/rollup-plugin-terser": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", + "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + }, + "peerDependencies": { + "rollup": ">=0.66.0 <3" } }, - "@babel/plugin-syntax-typescript": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", - "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", + "node_modules/rollup-plugin-terser/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, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", - "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", + "node_modules/rollup-plugin-terser/node_modules/jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "license": "MIT", + "dependencies": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "engines": { + "node": ">= 6" } }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", - "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9" + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" } }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "node_modules/rollup-plugin-terser/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", - "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", + "node_modules/rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "license": "MIT", + "dependencies": { + "estree-walker": "^0.6.1" } }, - "@babel/plugin-transform-classes": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", - "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", + "node_modules/rollup-pluginutils/node_modules/estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - } + "license": "MIT" }, - "@babel/plugin-transform-computed-properties": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", - "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "node_modules/rollup/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/template": "^7.20.7" + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "@babel/plugin-transform-destructuring": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", - "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", + "node_modules/rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "license": "MIT", + "engines": { + "node": "6.* || >= 7.*" } }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "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, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "node_modules/run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1" } }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/plugin-transform-flow-strip-types": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz", - "integrity": "sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==", + "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, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-flow": "^7.18.6" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "@babel/plugin-transform-for-of": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz", - "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==", + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "license": "MIT", + "dependencies": { + "ret": "~0.1.10" } }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } + "license": "MIT" }, - "@babel/plugin-transform-modules-amd": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", - "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "node_modules/sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" + "license": "MIT", + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.21.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz", - "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==", + "node_modules/sane/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" + "license": "ISC", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", - "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "node_modules/sane/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", - "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "node_modules/sane/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" } }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "node_modules/sane/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" } }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "node_modules/sane/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-parameters": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", - "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", + "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "node_modules/sane/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-transform-react-constant-elements": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.21.3.tgz", - "integrity": "sha512-4DVcFeWe/yDYBLp0kBmOGFJ6N2UYg7coGid1gdxb4co62dy/xISDMaYBXBVXEDhfgMk7qkbcYiGtwd5Q/hwDDQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "@babel/plugin-transform-react-display-name": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", - "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "node_modules/sane/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-react-jsx": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz", - "integrity": "sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==", + "node_modules/sane/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.21.0" + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", - "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "node_modules/sane/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, - "requires": { - "@babel/plugin-transform-react-jsx": "^7.18.6" + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-react-pure-annotations": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", - "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "node_modules/sane/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-regenerator": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", - "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "node_modules/sane/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "node_modules/sane/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-runtime": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz", - "integrity": "sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==", + "node_modules/sane/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-plugin-utils": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" - }, + "license": "MIT", "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 - } + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "node_modules/sane/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "@babel/plugin-transform-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", - "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "node_modules/sane/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "node_modules/sane/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "node_modules/sane/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "node_modules/sane/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "@babel/plugin-transform-typescript": { - "version": "7.21.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz", - "integrity": "sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==", + "node_modules/sane/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-typescript": "^7.20.0" + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "node_modules/sanitize.css": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz", + "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } + "license": "CC0-1.0" }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "node_modules/sass-loader": { + "version": "10.5.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.5.2.tgz", + "integrity": "sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "license": "MIT", + "dependencies": { + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "webpack": "^4.36.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + } } }, - "@babel/preset-env": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz", - "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==", + "node_modules/sass-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "requires": { - "@babel/compat-data": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7", - "@babel/plugin-proposal-async-generator-functions": "^7.20.7", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.21.0", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.21.0", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.21.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.20.7", - "@babel/plugin-transform-async-to-generator": "^7.20.7", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.21.0", - "@babel/plugin-transform-classes": "^7.21.0", - "@babel/plugin-transform-computed-properties": "^7.20.7", - "@babel/plugin-transform-destructuring": "^7.21.3", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.21.0", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.20.11", - "@babel/plugin-transform-modules-commonjs": "^7.21.2", - "@babel/plugin-transform-modules-systemjs": "^7.20.11", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.21.3", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.20.5", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.20.7", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.21.4", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - }, + "license": "MIT", "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 - } + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "@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==", + "node_modules/sass-loader/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "@babel/preset-react": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", - "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-react-display-name": "^7.18.6", - "@babel/plugin-transform-react-jsx": "^7.18.6", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-pure-annotations": "^7.18.6" - } + "license": "ISC" }, - "@babel/preset-typescript": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.4.tgz", - "integrity": "sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==", + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-syntax-jsx": "^7.21.4", - "@babel/plugin-transform-modules-commonjs": "^7.21.2", - "@babel/plugin-transform-typescript": "^7.21.3" + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" } }, - "@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, - "@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", "dev": true, - "requires": { - "regenerator-runtime": "^0.13.11" + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" } }, - "@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "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, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "@babel/traverse": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", - "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.4", - "@babel/types": "^7.21.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - } + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true, + "license": "MIT" }, - "@babel/types": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", - "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", + "node_modules/selfsigned": { + "version": "1.10.14", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", + "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "license": "MIT", + "dependencies": { + "node-forge": "^0.10.0" } }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@csstools/normalize.css": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", - "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==", - "dev": true - }, - "@csstools/postcss-cascade-layers": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", - "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "node_modules/semantic-ui-css": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/semantic-ui-css/-/semantic-ui-css-2.5.0.tgz", + "integrity": "sha512-jIWn3WXXE2uSaWCcB+gVJVRG3masIKtTMNEP2X8Aw909H2rHpXGneYOxzO3hT8TpyvB5/dEEo9mBFCitGwoj1A==", "dev": true, - "requires": { - "@csstools/selector-specificity": "^2.0.2", - "postcss-selector-parser": "^6.0.10" + "license": "MIT", + "dependencies": { + "jquery": "x.*" } }, - "@csstools/postcss-color-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", - "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "node_modules/semantic-ui-less": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/semantic-ui-less/-/semantic-ui-less-2.5.0.tgz", + "integrity": "sha512-Nlp8iR0otCQB74Yqob2Dxpsm5H9YAp3NvQ3sWDediwFjrd/l3Leu9md2O82UU5n5hOSqu95xnTok55eIAhlTjg==", "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "jquery": "x.*" } }, - "@csstools/postcss-font-format-keywords": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", - "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "node_modules/semantic-ui-react": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-2.1.5.tgz", + "integrity": "sha512-nIqmmUNpFHfovEb+RI2w3E2/maZQutd8UIWyRjf1SLse+XF51hI559xbz/sLN3O6RpLjr/echLOOXwKCirPy3Q==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.5", + "@fluentui/react-component-event-listener": "~0.63.0", + "@fluentui/react-component-ref": "~0.63.0", + "@popperjs/core": "^2.6.0", + "@semantic-ui-react/event-stack": "^3.1.3", + "clsx": "^1.1.1", + "keyboard-key": "^1.1.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "prop-types": "^15.7.2", + "react-is": "^16.8.6 || ^17.0.0 || ^18.0.0", + "react-popper": "^2.3.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "@csstools/postcss-hwb-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", - "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "@csstools/postcss-ic-unit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", - "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "@csstools/postcss-is-pseudo-class": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", - "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "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, - "requires": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" + "license": "MIT", + "dependencies": { + "ms": "2.0.0" } }, - "@csstools/postcss-nested-calc": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", - "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } + "license": "MIT" }, - "@csstools/postcss-normalize-display-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", - "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "node_modules/send/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, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, - "@csstools/postcss-oklab-function": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", - "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" } }, - "@csstools/postcss-progressive-custom-properties": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", - "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "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, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "@csstools/postcss-stepped-value-functions": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", - "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "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, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "ms": "2.0.0" } }, - "@csstools/postcss-text-decoration-shorthand": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", - "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "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, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "@csstools/postcss-trigonometric-functions": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", - "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "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, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, - "@csstools/postcss-unset-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", - "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true, - "requires": {} + "license": "ISC" }, - "@csstools/selector-specificity": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", - "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "requires": {} + "license": "MIT" }, - "@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true, - "requires": { - "eslint-visitor-keys": "^3.3.0" - } + "license": "ISC" }, - "@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", - "dev": true + "node_modules/serve-index/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" + } }, - "@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true, + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", "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 - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "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 - } + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, - "@eslint/js": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", - "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", - "dev": true + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } }, - "@fluentui/react-component-event-listener": { - "version": "0.63.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-component-event-listener/-/react-component-event-listener-0.63.1.tgz", - "integrity": "sha512-gSMdOh6tI3IJKZFqxfQwbTpskpME0CvxdxGM2tdglmf6ZPVDi0L4+KKIm+2dN8nzb8Ya1A8ZT+Ddq0KmZtwVQg==", + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", "dev": true, - "requires": { - "@babel/runtime": "^7.10.4" + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "@fluentui/react-component-ref": { - "version": "0.63.1", - "resolved": "https://registry.npmjs.org/@fluentui/react-component-ref/-/react-component-ref-0.63.1.tgz", - "integrity": "sha512-8MkXX4+R3i80msdbD4rFpEB4WWq2UDvGwG386g3ckIWbekdvN9z2kWAd9OXhRGqB7QeOsoAGWocp6gAMCivRlw==", + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, - "requires": { - "@babel/runtime": "^7.10.4", - "react-is": "^16.6.3" + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", "dependencies": { - "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 - } + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true + "node_modules/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, + "license": "MIT" }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" }, - "@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==", + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "license": "MIT", "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" } }, - "@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 + "node_modules/shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", + "dev": true, + "license": "MIT" }, - "@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "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, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "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" - } - } + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "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, - "requires": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "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" - } - }, - "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", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } + "license": "MIT", + "engines": { + "node": ">=8" } }, - "@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "node_modules/shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", "dev": true, - "requires": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - } + "license": "MIT" }, - "@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "dev": true, - "requires": { - "jest-get-type": "^29.4.3" - }, + "license": "MIT", + "optional": true + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", "dependencies": { - "jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "dev": true - } + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "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" - } - } + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, - "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "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" - } - } + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, + "license": "MIT", "dependencies": { - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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" - } - }, - "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", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "requires": { - "@sinclair/typebox": "^0.25.16" - } + "license": "ISC" }, - "@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, + "license": "MIT", "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 - } + "is-arrayish": "^0.3.1" } }, - "@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } + "license": "MIT" }, - "@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true, - "requires": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" + "license": "MIT" + }, + "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" } }, - "@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", + "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, - "requires": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, + "license": "MIT", "dependencies": { - "@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - } - }, - "jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", - "dev": true - }, - "jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", - "dev": true, - "requires": { - "@types/node": "*", - "jest-util": "^29.5.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "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" - } - } + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "license": "MIT", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - }, + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - } + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@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 - }, - "@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, - "requires": { - "eslint-scope": "5.1.1" + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/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": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } + "ms": "2.0.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==", + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@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 + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "@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==", + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" } }, - "@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz", - "integrity": "sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==", + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, - "requires": { - "ansi-html-community": "^0.0.8", - "common-path-prefix": "^3.0.0", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "find-up": "^5.0.0", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^3.0.0", - "source-map": "^0.7.3" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "@popperjs/core": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz", - "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==", - "dev": true + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" }, - "@rollup/plugin-babel": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "node_modules/snapdragon/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, - "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@rollup/pluginutils": "^3.1.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "@rollup/plugin-node-resolve": { - "version": "11.2.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", - "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "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, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "@types/resolve": "1.17.1", - "builtin-modules": "^3.1.0", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.19.0" + "license": "MIT", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" } }, - "@rollup/plugin-replace": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "node_modules/sockjs-client": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", + "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", "dev": true, - "requires": { - "@rollup/pluginutils": "^3.1.0", - "magic-string": "^0.25.7" + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "eventsource": "^2.0.2", + "faye-websocket": "^0.11.4", + "inherits": "^2.0.4", + "url-parse": "^1.5.10" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://tidelift.com/funding/github/npm/sockjs-client" } }, - "@rollup/pluginutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "requires": { - "@types/estree": "0.0.39", - "estree-walker": "^1.0.1", - "picomatch": "^2.2.2" - }, + "license": "MIT", "dependencies": { - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", - "dev": true - } + "ms": "^2.1.1" } }, - "@rushstack/eslint-patch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", - "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==", - "dev": true + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "@semantic-ui-react/event-stack": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@semantic-ui-react/event-stack/-/event-stack-3.1.3.tgz", - "integrity": "sha512-FdTmJyWvJaYinHrKRsMLDrz4tTMGdFfds299Qory53hBugiDvGC0tEJf+cHsi5igDwWb/CLOgOiChInHwq8URQ==", + "node_modules/sortobject": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/sortobject/-/sortobject-4.17.0.tgz", + "integrity": "sha512-gzx7USv55AFRQ7UCWJHHauwD/ptUHF9MLXCGO3f5M9zauDPZ/4a9H6/VVbOXefdpEoI1unwB/bArHIVMbWBHmA==", "dev": true, - "requires": { - "exenv": "^1.2.2", - "prop-types": "^15.6.2" + "license": "Artistic-2.0", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" } }, - "@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", - "dev": true + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true, + "license": "MIT" }, - "@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "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, - "requires": { - "type-detect": "4.0.8" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" } }, - "@surma/rollup-plugin-off-main-thread": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", "dev": true, - "requires": { - "ejs": "^3.1.6", - "json5": "^2.2.0", - "magic-string": "^0.25.0", - "string.prototype.matchall": "^4.0.6" + "license": "MIT", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, - "@svgr/babel-plugin-add-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==", - "dev": true - }, - "@svgr/babel-plugin-remove-jsx-attribute": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz", - "integrity": "sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==", - "dev": true - }, - "@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz", - "integrity": "sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==", - "dev": true - }, - "@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz", - "integrity": "sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==", - "dev": true - }, - "@svgr/babel-plugin-svg-dynamic-title": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz", - "integrity": "sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==", - "dev": true - }, - "@svgr/babel-plugin-svg-em-dimensions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz", - "integrity": "sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==", - "dev": true + "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" + } }, - "@svgr/babel-plugin-transform-react-native-svg": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz", - "integrity": "sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==", - "dev": true + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true, + "license": "MIT" }, - "@svgr/babel-plugin-transform-svg-component": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz", - "integrity": "sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==", - "dev": true + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true, + "license": "MIT" }, - "@svgr/babel-preset": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz", - "integrity": "sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==", + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, - "requires": { - "@svgr/babel-plugin-add-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-attribute": "^5.4.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "^5.0.1", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^5.0.1", - "@svgr/babel-plugin-svg-dynamic-title": "^5.4.0", - "@svgr/babel-plugin-svg-em-dimensions": "^5.4.0", - "@svgr/babel-plugin-transform-react-native-svg": "^5.4.0", - "@svgr/babel-plugin-transform-svg-component": "^5.5.0" + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "@svgr/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz", - "integrity": "sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==", + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true, - "requires": { - "@svgr/plugin-jsx": "^5.5.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0" - } + "license": "CC-BY-3.0" }, - "@svgr/hast-util-to-babel-ast": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz", - "integrity": "sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==", + "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, - "requires": { - "@babel/types": "^7.12.6" + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "@svgr/plugin-jsx": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz", - "integrity": "sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==", + "node_modules/spdx-license-ids": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@svgr/babel-preset": "^5.5.0", - "@svgr/hast-util-to-babel-ast": "^5.5.0", - "svg-parser": "^2.0.2" - } + "license": "CC0-1.0" }, - "@svgr/plugin-svgo": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz", - "integrity": "sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "deepmerge": "^4.2.2", - "svgo": "^1.2.2" - } - }, - "@svgr/webpack": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz", - "integrity": "sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==", + "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, - "requires": { - "@babel/core": "^7.12.3", - "@babel/plugin-transform-react-constant-elements": "^7.12.1", - "@babel/preset-env": "^7.12.1", - "@babel/preset-react": "^7.12.5", - "@svgr/core": "^5.5.0", - "@svgr/plugin-jsx": "^5.5.0", - "@svgr/plugin-svgo": "^5.5.0", - "loader-utils": "^2.0.0" + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" } }, - "@testing-library/dom": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.2.0.tgz", - "integrity": "sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==", + "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, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "^5.0.0", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" } }, - "@testing-library/jest-dom": { - "version": "5.16.5", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz", - "integrity": "sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==", + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "requires": { - "@adobe/css-tools": "^4.0.1", - "@babel/runtime": "^7.9.2", - "@types/testing-library__jest-dom": "^5.9.1", - "aria-query": "^5.0.0", - "chalk": "^3.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", - "lodash": "^4.17.15", - "redent": "^3.0.0" - }, + "license": "MIT", "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "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", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" } }, - "@testing-library/react": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz", - "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==", + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", "dev": true, - "requires": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^9.0.0", - "@types/react-dom": "^18.0.0" + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" } }, - "@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 - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true - }, - "@types/aria-query": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", - "integrity": "sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==", - "dev": true - }, - "@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } + "license": "BSD-3-Clause" }, - "@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" } }, - "@types/babel__traverse": { - "version": "7.18.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.4.tgz", - "integrity": "sha512-TLG7CsGZZmX9aDF78UuJxnNTfQyRUFU0OYIVyIblr0/wd/HvsIo8wmuB90CszeD2MtLLAE9Tt4cWvk+KVkyGIw==", + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } + "license": "MIT" }, - "@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, - "requires": { - "@types/connect": "*", - "@types/node": "*" + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "@types/bonjour": { - "version": "3.5.10", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", - "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "requires": { - "@types/node": "*" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", "dev": true, - "requires": { - "@types/node": "*" - } + "license": "MIT" }, - "@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==", + "node_modules/static-eval": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz", + "integrity": "sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==", "dev": true, - "requires": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "license": "MIT", + "dependencies": { + "escodegen": "^1.8.1" } }, - "@types/eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==", + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true - }, - "@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "node_modules/static-eval/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "@types/express-serve-static-core": { - "version": "4.17.34", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", - "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", + "node_modules/static-eval/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "license": "MIT", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" } }, - "@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "node_modules/static-eval/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, - "requires": { - "@types/node": "*" + "engines": { + "node": ">= 0.8.0" } }, - "@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true - }, - "@types/http-proxy": { - "version": "1.17.11", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", - "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "node_modules/static-eval/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, - "requires": { - "@types/node": "*" + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" + "license": "MIT", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "@types/jest": { - "version": "29.5.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz", - "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==", + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", "dev": true, - "requires": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - }, + "license": "MIT", "dependencies": { - "pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - } + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" } }, - "@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/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/node": { - "version": "18.16.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.1.tgz", - "integrity": "sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA==", - "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/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true - }, - "@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "dev": true - }, - "@types/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.0.tgz", - "integrity": "sha512-0FLj93y5USLHdnhIhABk83rm8XEGA7kH3cr+YUlvxoUGp1xNt/DINUMvqPxLyOQMzLmZe8i4RTHbvb8MC7NmrA==", - "dev": true, - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "@types/react-dom": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.1.tgz", - "integrity": "sha512-8QZEV9+Kwy7tXFmjJrp3XUKQSs9LTnE0KnoUb0YCguWBiNW0Yfb2iBMYZ08WPg35IR6P3Z0s00B15SwZnO26+w==", - "dev": true, - "requires": { - "@types/react": "*" - } - }, - "@types/resolve": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", - "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@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/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, - "@types/semver": { - "version": "7.3.13", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", - "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", - "dev": true - }, - "@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", - "dev": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", - "dev": true, - "requires": { - "@types/mime": "*", - "@types/node": "*" - } - }, - "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/stack-utils": { + "node_modules/statuses": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/testing-library__jest-dom": { - "version": "5.14.5", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz", - "integrity": "sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ==", - "dev": true, - "requires": { - "@types/jest": "*" - } - }, - "@types/trusted-types": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz", - "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==", - "dev": true - }, - "@types/ws": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", - "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/yargs": { - "version": "16.0.5", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", - "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz", - "integrity": "sha512-AVi0uazY5quFB9hlp2Xv+ogpfpk77xzsgsIEWyVS7uK/c7MZ5tw7ZPbapa0SbfkqE0fsAMkz5UwtgMLVk2BQAg==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/type-utils": "5.59.1", - "@typescript-eslint/utils": "5.59.1", - "debug": "^4.3.4", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.59.1.tgz", - "integrity": "sha512-KVtKcHEizCIRx//LC9tBi6xp94ULKbU5StVHBVWURJQOVa2qw6HP28Hu7LmHrQM3p9I3q5Y2VR4wKllCJ3IWrw==", - "dev": true, - "requires": { - "@typescript-eslint/utils": "5.59.1" - } - }, - "@typescript-eslint/parser": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.1.tgz", - "integrity": "sha512-nzjFAN8WEu6yPRDizIFyzAfgK7nybPodMNFGNH0M9tei2gYnYszRDqVA0xlnRjkl7Hkx2vYrEdb6fP2a21cG1g==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/typescript-estree": "5.59.1", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz", - "integrity": "sha512-mau0waO5frJctPuAzcxiNWqJR5Z8V0190FTSqRw1Q4Euop6+zTwHAf8YIXNwDOT29tyUDrQ65jSg9aTU/H0omA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/visitor-keys": "5.59.1" - } - }, - "@typescript-eslint/type-utils": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz", - "integrity": "sha512-ZMWQ+Oh82jWqWzvM3xU+9y5U7MEMVv6GLioM3R5NJk6uvP47kZ7YvlgSHJ7ERD6bOY7Q4uxWm25c76HKEwIjZw==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "5.59.1", - "@typescript-eslint/utils": "5.59.1", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/types": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.1.tgz", - "integrity": "sha512-dg0ICB+RZwHlysIy/Dh1SP+gnXNzwd/KS0JprD3Lmgmdq+dJAJnUPe1gNG34p0U19HvRlGX733d/KqscrGC1Pg==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz", - "integrity": "sha512-lYLBBOCsFltFy7XVqzX0Ju+Lh3WPIAWxYpmH/Q7ZoqzbscLiCW00LeYCdsUnnfnj29/s1WovXKh2gwCoinHNGA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/visitor-keys": "5.59.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.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.1.tgz", - "integrity": "sha512-MkTe7FE+K1/GxZkP5gRj3rCztg45bEhsd8HYjczBuYm+qFHP5vtZmjx3B0yUCDotceQ4sHgTyz60Ycl225njmA==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.59.1", - "@typescript-eslint/types": "5.59.1", - "@typescript-eslint/typescript-estree": "5.59.1", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "dependencies": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.59.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz", - "integrity": "sha512-6waEYwBTCWryx0VJmP7JaM4FpipLsFl9CvYf2foAE8Qh/Y0s+bxWysciwOs0LTBED4JCaNxTZ5rGadB14M6dwA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.59.1", - "eslint-visitor-keys": "^3.3.0" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", - "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", - "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", - "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", - "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", - "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", - "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", - "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", - "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", - "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", - "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", - "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/helper-wasm-section": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-opt": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5", - "@webassemblyjs/wast-printer": "1.11.5" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", - "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", - "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", - "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", - "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.5", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "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": {} - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "address": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", - "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", - "dev": true - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - } - }, - "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" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "requires": { - "deep-equal": "^2.0.5" - } - }, - "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - } - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, - "array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" - } - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "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 - }, - "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 - }, - "autoprefixer": { - "version": "10.4.14", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", - "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", - "dev": true, - "requires": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true - }, - "axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", - "dev": true - }, - "axobject-query": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", - "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", - "dev": true, - "requires": { - "deep-equal": "^2.0.5" - } - }, - "babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", - "dev": true, - "requires": { - "@jest/transform": "^29.5.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-plugin-macros": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", - "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" - } - }, - "babel-plugin-named-asset-import": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", - "integrity": "sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==", - "dev": true, - "requires": {} - }, - "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - } - }, - "babel-plugin-transform-react-remove-prop-types": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", - "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", - "dev": true - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^29.5.0", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "babel-preset-react-app": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", - "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", - "dev": true, - "requires": { - "@babel/core": "^7.16.0", - "@babel/plugin-proposal-class-properties": "^7.16.0", - "@babel/plugin-proposal-decorators": "^7.16.4", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", - "@babel/plugin-proposal-numeric-separator": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.0", - "@babel/plugin-proposal-private-methods": "^7.16.0", - "@babel/plugin-transform-flow-strip-types": "^7.16.0", - "@babel/plugin-transform-react-display-name": "^7.16.0", - "@babel/plugin-transform-runtime": "^7.16.4", - "@babel/preset-env": "^7.16.4", - "@babel/preset-react": "^7.16.0", - "@babel/preset-typescript": "^7.16.0", - "@babel/runtime": "^7.16.3", - "babel-plugin-macros": "^3.1.0", - "babel-plugin-transform-react-remove-prop-types": "^0.4.24" - } - }, - "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 - }, - "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 - }, - "bfj": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz", - "integrity": "sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "check-types": "^11.1.1", - "hoopy": "^0.1.4", - "tryer": "^1.0.1" - } - }, - "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 - }, - "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.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "bonjour-service": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", - "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", - "dev": true, - "requires": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer-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": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "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", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001481", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz", - "integrity": "sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==", - "dev": true - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", - "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "check-types": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz", - "integrity": "sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA==", - "dev": true - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "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.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true - }, - "clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, - "colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, - "common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "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 - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "confusing-browser-globals": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", - "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true - }, - "connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "dev": true - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "core-js": { - "version": "3.30.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.1.tgz", - "integrity": "sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ==", - "dev": true - }, - "core-js-compat": { - "version": "3.30.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.1.tgz", - "integrity": "sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw==", - "dev": true, - "requires": { - "browserslist": "^4.21.5" - } - }, - "core-js-pure": { - "version": "3.30.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.1.tgz", - "integrity": "sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg==", - "dev": true - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true - }, - "css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "css-declaration-sorter": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz", - "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==", - "dev": true, - "requires": {} - }, - "css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" - } - }, - "css-loader": { - "version": "6.7.3", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", - "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", - "dev": true, - "requires": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.19", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" - } - }, - "css-minimizer-webpack-plugin": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", - "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", - "dev": true, - "requires": { - "cssnano": "^5.0.6", - "jest-worker": "^27.0.2", - "postcss": "^8.3.5", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", - "dev": true, - "requires": {} - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true - }, - "cssdb": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.5.4.tgz", - "integrity": "sha512-fGD+J6Jlq+aurfE1VDXlLS4Pt0VtNlu2+YgfGOdMxRyl/HQ9bDiHTwSck1Yz8A97Dt/82izSK6Bp/4nVqacOsg==", - "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 - }, - "cssnano": { - "version": "5.1.15", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", - "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", - "dev": true, - "requires": { - "cssnano-preset-default": "^5.2.14", - "lilconfig": "^2.0.3", - "yaml": "^1.10.2" - } - }, - "cssnano-preset-default": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", - "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", - "dev": true, - "requires": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^3.1.0", - "postcss-calc": "^8.2.3", - "postcss-colormin": "^5.3.1", - "postcss-convert-values": "^5.1.3", - "postcss-discard-comments": "^5.1.2", - "postcss-discard-duplicates": "^5.1.0", - "postcss-discard-empty": "^5.1.1", - "postcss-discard-overridden": "^5.1.0", - "postcss-merge-longhand": "^5.1.7", - "postcss-merge-rules": "^5.1.4", - "postcss-minify-font-values": "^5.1.0", - "postcss-minify-gradients": "^5.1.1", - "postcss-minify-params": "^5.1.4", - "postcss-minify-selectors": "^5.2.1", - "postcss-normalize-charset": "^5.1.0", - "postcss-normalize-display-values": "^5.1.0", - "postcss-normalize-positions": "^5.1.1", - "postcss-normalize-repeat-style": "^5.1.1", - "postcss-normalize-string": "^5.1.0", - "postcss-normalize-timing-functions": "^5.1.0", - "postcss-normalize-unicode": "^5.1.1", - "postcss-normalize-url": "^5.1.0", - "postcss-normalize-whitespace": "^5.1.1", - "postcss-ordered-values": "^5.1.3", - "postcss-reduce-initial": "^5.1.2", - "postcss-reduce-transforms": "^5.1.0", - "postcss-svgo": "^5.1.0", - "postcss-unique-selectors": "^5.1.1" - } - }, - "cssnano-utils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", - "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", - "dev": true, - "requires": {} - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, - "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 - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, - "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" - } - }, - "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "deep-equal": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", - "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.2", - "get-intrinsic": "^1.1.3", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - } - }, - "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 - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "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" - } - }, - "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.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "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 - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "dev": true, - "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true - }, - "diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, - "dns-packet": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", - "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", - "dev": true, - "requires": { - "@leichtgewicht/ip-codec": "^2.0.1" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true - }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, - "requires": { - "utila": "~0.4" - } - }, - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", - "dev": true - }, - "dotenv-expand": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", - "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", - "dev": true - }, - "duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "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.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", - "dev": true, - "requires": { - "jake": "^10.8.5" - } - }, - "electron-to-chromium": { - "version": "1.4.372", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.372.tgz", - "integrity": "sha512-MrlFq/j+TYHOjeWsWGYfzevc25HNeJdsF6qaLFrqBTRWZQtWkb1myq/Q2veLWezVaa5OcSZ99CFwTT4aF4Mung==", - "dev": true - }, - "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", - "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "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" - } - }, - "error-stack-parser": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", - "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", - "dev": true, - "requires": { - "stackframe": "^1.3.4" - } - }, - "es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true - }, - "es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - } - }, - "es-module-lexer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", - "dev": true - }, - "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - } - }, - "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "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, - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - } - } - }, - "eslint": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", - "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.39.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "eslint-config-react-app": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", - "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", - "dev": true, - "requires": { - "@babel/core": "^7.16.0", - "@babel/eslint-parser": "^7.16.3", - "@rushstack/eslint-patch": "^1.1.0", - "@typescript-eslint/eslint-plugin": "^5.5.0", - "@typescript-eslint/parser": "^5.5.0", - "babel-preset-react-app": "^10.0.1", - "confusing-browser-globals": "^1.0.11", - "eslint-plugin-flowtype": "^8.0.3", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jest": "^25.3.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.1", - "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-testing-library": "^5.0.1" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", - "dev": true, - "requires": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "dev": true, - "requires": { - "debug": "^3.2.7" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "eslint-plugin-flowtype": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", - "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", - "dev": true, - "requires": { - "lodash": "^4.17.21", - "string-natural-compare": "^3.0.1" - } - }, - "eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", - "dev": true, - "requires": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" - }, - "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" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-plugin-jest": { - "version": "25.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", - "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "^5.0.0" - } - }, - "eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "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 - } - } - }, - "eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", - "dev": true, - "requires": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "requires": {} - }, - "eslint-plugin-testing-library": { - "version": "5.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.10.3.tgz", - "integrity": "sha512-0yhsKFsjHLud5PM+f2dWr9K3rqYzMy4cSHs3lcmFYMa1CdSzRvHGgXvsFarBjZ41gU8jhTdMIkg8jHLxGJqLqw==", - "dev": true, - "requires": { - "@typescript-eslint/utils": "^5.58.0" - } - }, - "eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", - "dev": true - }, - "eslint-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==", - "dev": true, - "requires": { - "@types/eslint": "^7.29.0 || ^8.4.1", - "jest-worker": "^28.0.2", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-worker": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", - "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - } - }, - "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.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "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" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "estree-walker": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", - "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", - "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 - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "exenv": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", - "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==", - "dev": true - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true - }, - "expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", - "dev": true, - "requires": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" - }, - "dependencies": { - "@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "dev": true - }, - "jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", - "dev": true, - "requires": { - "@jest/types": "^29.5.0", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "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 - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "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-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - } - }, - "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" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "filesize": { - "version": "8.0.7", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", - "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", - "dev": true - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "fork-ts-checker-webpack-plugin": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", - "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" - } - }, - "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", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "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 - }, - "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" - } - }, - "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" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - } - } - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "formik": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/formik/-/formik-2.2.9.tgz", - "integrity": "sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==", - "dev": true, - "requires": { - "deepmerge": "^2.1.1", - "hoist-non-react-statics": "^3.3.0", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "react-fast-compare": "^2.0.1", - "tiny-warning": "^1.0.2", - "tslib": "^1.10.0" - }, - "dependencies": { - "deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", - "dev": true - }, - "react-fast-compare": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", - "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==", - "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 - } - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-own-enumerable-property-symbols": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", - "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", - "dev": true - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "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" - } - }, - "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", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "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 - }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3" - } - }, - "globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "requires": { - "duplexer": "^0.1.2" - } - }, - "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 - }, - "harmony-reflect": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", - "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "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 - }, - "hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dev": true, - "requires": { - "react-is": "^16.7.0" - }, - "dependencies": { - "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 - } - } - }, - "hoopy": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz", - "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==", - "dev": true - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, - "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-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", - "dev": true, - "requires": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - } - }, - "html-webpack-plugin": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.1.tgz", - "integrity": "sha512-cTUzZ1+NqjGEKjmVgZKLMdiFg3m9MdRXkZW2OEe69WYVi5ONLMmlnSZdXzGGMOq0C8jGDrL6EWyEDDUioHO/pA==", - "dev": true, - "requires": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" - } - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, - "requires": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "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" - } - }, - "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": {} - }, - "idb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", - "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", - "dev": true - }, - "identity-obj-proxy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", - "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", - "dev": true, - "requires": { - "harmony-reflect": "^1.4.6" - } - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - } - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "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 - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "dev": true - }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - } - }, - "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-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", - "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", - "dev": true - }, - "is-root": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", - "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", - "dev": true - }, - "is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "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", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", - "dev": true, - "requires": { - "@jest/core": "^27.5.1", - "import-local": "^3.0.2", - "jest-cli": "^27.5.1" - } - }, - "jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - } - }, - "jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, - "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "requires": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "requires": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "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" - } - }, - "babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "requires": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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" - } - }, - "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", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } - } - }, - "jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "dev": true - }, - "pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - } - }, - "jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - } - }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - }, - "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, - "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "requires": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", - "dev": true - }, - "pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", - "dev": true, - "requires": { - "@jest/schemas": "^29.4.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true - }, - "jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - } - }, - "jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "dependencies": { - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "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" - } - }, - "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", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } - } - }, - "jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "dependencies": { - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "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" - } - }, - "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", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } - } - }, - "jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, - "jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "requires": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "dependencies": { - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, - "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "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" - } - }, - "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", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } - } - }, - "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-watch-typeahead": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", - "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "jest-regex-util": "^28.0.0", - "jest-watcher": "^28.0.0", - "slash": "^4.0.0", - "string-length": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, - "dependencies": { - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - } - } - }, - "@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", - "dev": true, - "requires": { - "@sinclair/typebox": "^0.24.1" - } - }, - "@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "dev": true, - "requires": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dev": true, - "requires": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", - "dev": true - }, - "@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - } - } - }, - "jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "dev": true - }, - "jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dev": true, - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "dev": true, - "requires": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, - "dependencies": { - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "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" - } - } - } - }, - "pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dev": true, - "requires": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - }, - "string-length": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", - "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", - "dev": true, - "requires": { - "char-regex": "^2.0.0", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "char-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", - "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", - "dev": true - } - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - } - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "requires": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jiti": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", - "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", - "dev": true - }, - "jquery": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.4.tgz", - "integrity": "sha512-v28EW9DWDFpzcD9O5iyJXg3R3+q+mET5JhnjJzQUZMHOv67bpSIHq81GEYpPNZHG+XXHsfSme3nxp/hndKEcsQ==", - "dev": true - }, - "js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-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 - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true + "license": "MIT", + "engines": { + "node": ">= 0.8" + } }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" } }, - "jsonpointer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", - "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", - "dev": true + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } }, - "jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "node_modules/stream-composer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-composer/-/stream-composer-1.0.2.tgz", + "integrity": "sha512-bnBselmwfX5K10AH6L4c8+S5lgZMWI7ZYrz2rvYjCPB2DIMC4Ig8OpxGpNJSxRZ58oti7y1IcNvjBAz9vW5m4w==", "dev": true, - "requires": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" + "license": "MIT", + "dependencies": { + "streamx": "^2.13.2" } }, - "keyboard-key": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keyboard-key/-/keyboard-key-1.1.0.tgz", - "integrity": "sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ==", - "dev": true + "node_modules/stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true, + "license": "MIT" }, - "klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", - "dev": true + "node_modules/streamx": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", + "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } }, - "language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } }, - "language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "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, - "requires": { - "language-subtag-registry": "~0.3.2" + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" } }, - "launch-editor": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", - "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, - "requires": { - "picocolors": "^1.0.0", - "shell-quote": "^1.7.3" + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" } }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "dev": true, + "license": "MIT" }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } }, - "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 + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" } }, - "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==", + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, - "requires": { - "p-locate": "^5.0.0" + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", - "dev": true + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true + "node_modules/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" + }, + "engines": { + "node": ">=8" + } }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "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 + "node_modules/strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", + "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + }, + "engines": { + "node": ">=4" + } }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "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==", + "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, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" } }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "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, - "requires": { - "tslib": "^2.0.3" + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/style-loader": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.3.0.tgz", + "integrity": "sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==", "dev": true, - "requires": { - "yallist": "^3.0.2" + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true + "node_modules/stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } }, - "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" + "license": "MIT", + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=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==", + "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, - "requires": { - "semver": "^6.0.0" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "license": "MIT", "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 - } + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" } }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "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, - "requires": { - "tmpl": "1.0.5" + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "mdn-data": { + "node_modules/svg-parser": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true, + "license": "MIT" }, - "memfs": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.1.tgz", - "integrity": "sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA==", + "node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", "dev": true, - "requires": { - "fs-monkey": "^1.0.3" + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" } }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/svgo/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, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/svgo/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, - "requires": { - "mime-db": "1.52.0" + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "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 + "node_modules/svgo/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" + } }, - "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 + "node_modules/svgo/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" }, - "mini-css-extract-plugin": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.5.tgz", - "integrity": "sha512-9HaR++0mlgom81s95vvNjxkg52n2b5s//3ZTI1EtzFb98awsLSivs2LMsVqnQ3ay0PVhqWcGNyDaTE961FOcjQ==", - "dev": true, - "requires": { - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - } - } + "node_modules/svgo/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" } }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/svgo/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", "dev": true, - "requires": { - "brace-expansion": "^1.1.7" + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true + "node_modules/svgo/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" + } }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/svgo/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, - "requires": { - "minimist": "^1.2.6" + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" } }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/svgo/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true, + "license": "BSD-2-Clause" }, - "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==", + "node_modules/svgo/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, - "requires": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" + "license": "MIT", + "engines": { + "node": ">=0.8.0" } }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "node_modules/svgo/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, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true - }, - "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 - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "node_modules/svgo/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", "dev": true, - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "~1.0.0" } }, - "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-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "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 + "node_modules/svgo/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" + }, + "engines": { + "node": ">=4" + } }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" }, - "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==", + "node_modules/table": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, - "requires": { - "path-key": "^3.0.0" + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" } }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "node_modules/table/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, - "requires": { - "boolbase": "^1.0.0" + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "nwsapi": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz", - "integrity": "sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==", - "dev": true + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } }, - "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } }, - "object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, - "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 + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" } }, - "object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "node_modules/tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "license": "MIT", + "dependencies": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "engines": { + "node": ">=8" } }, - "object.getownpropertydescriptors": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz", - "integrity": "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==", + "node_modules/tempy/node_modules/type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", "dev": true, - "requires": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.2", - "safe-array-concat": "^1.0.0" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=6" } }, - "object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", "dev": true, - "requires": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "node_modules/terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "license": "BSD-2-Clause", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" } }, - "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==", + "node_modules/terser-webpack-plugin": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", + "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", "dev": true, - "requires": { - "ee-first": "1.1.1" + "license": "MIT", + "dependencies": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.5.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.3.4", + "webpack-sources": "^1.4.3" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "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==", + "node_modules/terser-webpack-plugin/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, - "requires": { - "wrappy": "1" - } + "license": "MIT" }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/terser-webpack-plugin/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, - "requires": { - "mimic-fn": "^2.1.0" + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "node_modules/terser-webpack-plugin/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, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-limit": { + "node_modules/terser-webpack-plugin/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, - "requires": { + "license": "MIT", + "dependencies": { "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "requires": { - "p-limit": "^3.0.2" + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "node_modules/terser-webpack-plugin/node_modules/terser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "dev": true, - "requires": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } + "license": "MIT" }, - "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==", + "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, - "requires": { - "callsites": "^3.0.0" + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=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==", + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" } }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", + "dev": true, + "license": "MIT" }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true, + "license": "MIT" }, - "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 + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } }, - "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 + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", + "dev": true, + "license": "MIT" }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "dev": true, + "license": "MIT" }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "node_modules/tinymce": { + "version": "6.8.5", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.8.5.tgz", + "integrity": "sha512-qAL/FxL7cwZHj4BfaF818zeJJizK9jU5IQzTcSLL4Rj5MaJdiVblEj7aDr80VCV1w9h4Lak9hlnALhq/kVtN1g==", + "dev": true, + "license": "MIT", + "peer": 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 + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" }, - "pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true, + "license": "MIT" }, - "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==", + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", "dev": true, - "requires": { - "find-up": "^4.0.0" - }, + "license": "MIT", "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "pkg-up": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", - "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, - "requires": { - "find-up": "^3.0.0" - }, + "license": "MIT", "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - } + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, - "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "license": "MIT", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "postcss-attribute-case-insensitive": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", - "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "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, - "requires": { - "postcss-selector-parser": "^6.0.10" + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "postcss-browser-comments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", - "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", - "dev": true, - "requires": {} - }, - "postcss-calc": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", - "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "node_modules/to-through": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-3.0.0.tgz", + "integrity": "sha512-y8MN937s/HVhEoBU1SxfHC+wxCHkV1a9gW8eAdTadYh/bGyesZIVcbjI+mSpFbSVwQici/XjBjuUyri1dnXwBw==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + }, + "engines": { + "node": ">=10.13.0" } }, - "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==", + "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, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "engines": { + "node": ">=0.6" } }, - "postcss-color-functional-notation": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", - "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "node_modules/toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } + "license": "MIT", + "peer": true }, - "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==", + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" } }, - "postcss-color-rebeccapurple": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", - "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "engines": { + "node": ">= 4.0.0" } }, - "postcss-colormin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", - "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" } }, - "postcss-convert-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", - "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "node_modules/tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", "dev": true, - "requires": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" - } + "license": "MIT" }, - "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==", + "node_modules/ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "postcss-custom-properties": { - "version": "12.1.11", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", - "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "postcss-custom-selectors": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", - "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" } }, - "postcss-dir-pseudo-class": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", - "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "postcss-discard-comments": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", - "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, - "requires": {} + "license": "0BSD" }, - "postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "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, - "requires": {} + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } }, - "postcss-discard-empty": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", - "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "node_modules/tsutils/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, - "requires": {} + "license": "0BSD" }, - "postcss-discard-overridden": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", - "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", "dev": true, - "requires": {} + "license": "MIT" }, - "postcss-double-position-gradients": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", - "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } + "license": "ISC" }, - "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==", + "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, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "postcss-flexbugs-fixes": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", - "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", - "dev": true, - "requires": {} - }, - "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==", + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.9" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "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==", + "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, - "requires": { - "postcss-selector-parser": "^6.0.9" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "postcss-font-variant": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", - "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", - "dev": true, - "requires": {} - }, - "postcss-gap-properties": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", - "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "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, - "requires": {} + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } }, - "postcss-image-set-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", - "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" } }, - "postcss-import": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", - "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, - "requires": {} + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, - "requires": { - "camelcase-css": "^2.0.1" + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "postcss-lab-function": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", - "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true, - "requires": { - "@csstools/postcss-progressive-custom-properties": "^1.1.0", - "postcss-value-parser": "^4.2.0" - } + "license": "MIT" }, - "postcss-load-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", - "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "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, - "requires": { - "lilconfig": "^2.0.5", - "yaml": "^2.1.1" - }, + "license": "MIT", "dependencies": { - "yaml": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", - "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", - "dev": true - } + "is-typedarray": "^1.0.0" } }, - "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==", + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.5", - "semver": "^7.3.5" + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" } }, - "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==", + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, - "requires": {} + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "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==", + "node_modules/underscore": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz", + "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==", "dev": true, - "requires": {} + "license": "MIT" }, - "postcss-merge-longhand": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", - "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^5.1.1" - } + "license": "MIT" }, - "postcss-merge-rules": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", - "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^3.1.0", - "postcss-selector-parser": "^6.0.5" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "postcss-minify-font-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", - "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "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, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "postcss-minify-gradients": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", - "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, - "requires": { - "colord": "^2.9.1", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "postcss-minify-params": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", - "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, - "requires": { - "browserslist": "^4.21.4", - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "postcss-minify-selectors": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", - "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.5" + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "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==", + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } + "license": "MIT" }, - "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==", + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", "dev": true, - "requires": { - "icss-utils": "^5.0.0" - } + "license": "MIT" }, - "postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "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, - "requires": { - "postcss-selector-parser": "^6.0.11" + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" } }, - "postcss-nesting": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", - "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "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, - "requires": { - "@csstools/selector-specificity": "^2.0.0", - "postcss-selector-parser": "^6.0.10" + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" } }, - "postcss-normalize": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", - "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "node_modules/unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", "dev": true, - "requires": { - "@csstools/normalize.css": "*", - "postcss-browser-comments": "^4", - "sanitize.css": "*" + "license": "MIT", + "dependencies": { + "crypto-random-string": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "postcss-normalize-charset": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", - "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "requires": {} + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } }, - "postcss-normalize-display-values": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", - "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "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, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, - "postcss-normalize-positions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", - "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" - } + "license": "MIT" }, - "postcss-normalize-repeat-style": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", - "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "postcss-normalize-string": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", - "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "postcss-normalize-timing-functions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", - "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "postcss-normalize-unicode": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", - "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", "dev": true, - "requires": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "postcss-normalize-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", - "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "node_modules/unset-value/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, - "requires": { - "normalize-url": "^6.0.1", - "postcss-value-parser": "^4.2.0" - } + "license": "MIT" }, - "postcss-normalize-whitespace": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", - "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" } }, - "postcss-opacity-percentage": { + "node_modules/update-browserslist-db": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", - "integrity": "sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==", - "dev": true, - "requires": {} - }, - "postcss-ordered-values": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", - "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, - "requires": { - "cssnano-utils": "^3.1.0", - "postcss-value-parser": "^4.2.0" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "postcss-overflow-shorthand": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", - "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "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, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" } }, - "postcss-page-break": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", - "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", "dev": true, - "requires": {} + "license": "MIT" }, - "postcss-place": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", - "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "node_modules/url": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" } }, - "postcss-preset-env": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz", - "integrity": "sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==", - "dev": true, - "requires": { - "@csstools/postcss-cascade-layers": "^1.1.1", - "@csstools/postcss-color-function": "^1.1.1", - "@csstools/postcss-font-format-keywords": "^1.0.1", - "@csstools/postcss-hwb-function": "^1.0.2", - "@csstools/postcss-ic-unit": "^1.0.1", - "@csstools/postcss-is-pseudo-class": "^2.0.7", - "@csstools/postcss-nested-calc": "^1.0.0", - "@csstools/postcss-normalize-display-values": "^1.0.1", - "@csstools/postcss-oklab-function": "^1.1.1", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.1", - "@csstools/postcss-text-decoration-shorthand": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.2", - "@csstools/postcss-unset-value": "^1.0.2", - "autoprefixer": "^10.4.13", - "browserslist": "^4.21.4", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^7.1.0", - "postcss-attribute-case-insensitive": "^5.0.2", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.4", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.1", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.10", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.5", - "postcss-double-position-gradients": "^3.1.2", - "postcss-env-function": "^4.0.6", - "postcss-focus-visible": "^6.0.4", - "postcss-focus-within": "^5.0.4", - "postcss-font-variant": "^5.0.0", - "postcss-gap-properties": "^3.0.5", - "postcss-image-set-function": "^4.0.7", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.1", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.2.0", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.4", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.5", - "postcss-pseudo-class-any-link": "^7.1.6", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.1", - "postcss-value-parser": "^4.2.0" - } - }, - "postcss-pseudo-class-any-link": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", - "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } - }, - "postcss-reduce-initial": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", - "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", "dev": true, - "requires": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } } }, - "postcss-reduce-transforms": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", - "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0" + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "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==", + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, - "requires": {} + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } }, - "postcss-selector-not": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.10" - } + "license": "MIT" }, - "postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "postcss-svgo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", - "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "dev": true, - "requires": { - "postcss-value-parser": "^4.2.0", - "svgo": "^2.7.0" - }, + "license": "MIT", "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "svgo": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", - "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", - "dev": true, - "requires": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - } - } + "inherits": "2.0.3" } }, - "postcss-unique-selectors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", - "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.5" - } + "license": "MIT" }, - "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 - }, - "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 - }, - "pretty-error": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", - "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "node_modules/util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", "dev": true, - "requires": { - "lodash": "^4.17.20", - "renderkid": "^3.0.0" + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" } }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } + "license": "ISC" }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true, + "license": "MIT" }, - "promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "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, - "requires": { - "asap": "~2.0.6" + "license": "MIT", + "engines": { + "node": ">= 0.4.0" } }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" } }, - "prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - }, - "dependencies": { - "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 - } - } + "license": "MIT" }, - "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==", + "node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", "dev": true, - "requires": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, + "license": "ISC", "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 - } + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" } }, - "psl": { + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "dev": true + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, - "requires": { - "side-channel": "^1.0.4" + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" } }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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" + } }, - "raf": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", - "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "node_modules/value-or-function": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-4.0.0.tgz", + "integrity": "sha512-aeVK81SIuT6aMJfNo9Vte8Dw0/FZINGBV8BfCraGtqVxIeLAEhJyoWs8SmvRVmXfGss2PmmOwZCuBPbZR+IYWg==", "dev": true, - "requires": { - "performance-now": "^2.1.0" + "license": "MIT", + "engines": { + "node": ">= 10.13.0" } }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, - "requires": { - "safe-buffer": "^5.1.0" + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, - "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 + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "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==", + "node_modules/vinyl": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-3.0.0.tgz", + "integrity": "sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==", "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, + "license": "MIT", "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } + "clone": "^2.1.2", + "clone-stats": "^1.0.0", + "remove-trailing-separator": "^1.1.0", + "replace-ext": "^2.0.0", + "teex": "^1.0.1" + }, + "engines": { + "node": ">=10.13.0" } }, - "react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "node_modules/vinyl-contents": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-contents/-/vinyl-contents-2.0.0.tgz", + "integrity": "sha512-cHq6NnGyi2pZ7xwdHSW1v4Jfnho4TEGtxZHw01cmnc8+i7jgR6bRnED/LbrKan/Q7CvVLbnvA5OepnhbpjBZ5Q==", "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0" + "license": "MIT", + "dependencies": { + "bl": "^5.0.0", + "vinyl": "^3.0.0" + }, + "engines": { + "node": ">=10.13.0" } }, - "react-app-polyfill": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz", - "integrity": "sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==", + "node_modules/vinyl-fs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-4.0.0.tgz", + "integrity": "sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw==", "dev": true, - "requires": { - "core-js": "^3.19.2", - "object-assign": "^4.1.1", - "promise": "^8.1.0", - "raf": "^3.4.1", - "regenerator-runtime": "^0.13.9", - "whatwg-fetch": "^3.6.2" + "license": "MIT", + "dependencies": { + "fs-mkdirp-stream": "^2.0.1", + "glob-stream": "^8.0.0", + "graceful-fs": "^4.2.11", + "iconv-lite": "^0.6.3", + "is-valid-glob": "^1.0.0", + "lead": "^4.0.0", + "normalize-path": "3.0.0", + "resolve-options": "^2.0.0", + "stream-composer": "^1.0.2", + "streamx": "^2.14.0", + "to-through": "^3.0.0", + "value-or-function": "^4.0.0", + "vinyl": "^3.0.0", + "vinyl-sourcemap": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" } }, - "react-dev-utils": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", - "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "node_modules/vinyl-fs/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, - "requires": { - "@babel/code-frame": "^7.16.0", - "address": "^1.1.2", - "browserslist": "^4.18.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "detect-port-alt": "^1.1.6", - "escape-string-regexp": "^4.0.0", - "filesize": "^8.0.6", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.5.0", - "global-modules": "^2.0.0", - "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.11", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "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 - }, - "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 - }, - "loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true - }, - "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" - } - } + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "node_modules/vinyl-sourcemap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-2.0.0.tgz", + "integrity": "sha512-BAEvWxbBUXvlNoFQVFVHpybBbjW1r03WhohJzJDSfgrrK5xVYIDTan6xN14DlyImShgDRv2gl9qhM6irVMsV0Q==", "dev": true, - "peer": true, - "requires": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "license": "MIT", + "dependencies": { + "convert-source-map": "^2.0.0", + "graceful-fs": "^4.2.10", + "now-and-later": "^3.0.0", + "streamx": "^2.12.5", + "vinyl": "^3.0.0", + "vinyl-contents": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" } }, - "react-error-overlay": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", - "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==", - "dev": true - }, - "react-fast-compare": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.1.tgz", - "integrity": "sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg==", - "dev": true + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true, + "license": "MIT" }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "react-popper": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", - "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dev": true, - "requires": { - "react-fast-compare": "^3.0.1", - "warning": "^4.0.2" + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" } }, - "react-refresh": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", - "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", - "dev": true + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } }, - "react-scripts": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", - "integrity": "sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==", + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "requires": { - "@babel/core": "^7.16.0", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", - "@svgr/webpack": "^5.5.0", - "babel-jest": "^27.4.2", - "babel-loader": "^8.2.3", - "babel-plugin-named-asset-import": "^0.3.8", - "babel-preset-react-app": "^10.0.1", - "bfj": "^7.0.2", - "browserslist": "^4.18.1", - "camelcase": "^6.2.1", - "case-sensitive-paths-webpack-plugin": "^2.4.0", - "css-loader": "^6.5.1", - "css-minimizer-webpack-plugin": "^3.2.0", - "dotenv": "^10.0.0", - "dotenv-expand": "^5.1.0", - "eslint": "^8.3.0", - "eslint-config-react-app": "^7.0.1", - "eslint-webpack-plugin": "^3.1.1", - "file-loader": "^6.2.0", - "fs-extra": "^10.0.0", - "fsevents": "^2.3.2", - "html-webpack-plugin": "^5.5.0", - "identity-obj-proxy": "^3.0.0", - "jest": "^27.4.3", - "jest-resolve": "^27.4.2", - "jest-watch-typeahead": "^1.0.0", - "mini-css-extract-plugin": "^2.4.5", - "postcss": "^8.4.4", - "postcss-flexbugs-fixes": "^5.0.2", - "postcss-loader": "^6.2.1", - "postcss-normalize": "^10.0.1", - "postcss-preset-env": "^7.0.1", - "prompts": "^2.4.2", - "react-app-polyfill": "^3.0.0", - "react-dev-utils": "^12.0.1", - "react-refresh": "^0.11.0", - "resolve": "^1.20.0", - "resolve-url-loader": "^4.0.0", - "sass-loader": "^12.3.0", - "semver": "^7.3.5", - "source-map-loader": "^3.0.0", - "style-loader": "^3.3.1", - "tailwindcss": "^3.0.2", - "terser-webpack-plugin": "^5.2.5", - "webpack": "^5.64.4", - "webpack-dev-server": "^4.6.0", - "webpack-manifest-plugin": "^4.0.2", - "workbox-webpack-plugin": "^6.4.1" - }, - "dependencies": { - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "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" - } - }, - "babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "requires": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "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" - } - }, - "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", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - } + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" } }, - "react-shallow-renderer": { - "version": "16.15.0", - "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", - "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", "dev": true, - "requires": { - "object-assign": "^4.1.1", - "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" } }, - "react-test-renderer": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz", - "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==", + "node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "dev": true, - "requires": { - "react-is": "^18.2.0", - "react-shallow-renderer": "^16.15.0", - "scheduler": "^0.23.0" - }, + "license": "MIT", "dependencies": { - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - } + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" } }, - "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==", + "node_modules/watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "dev": true, - "requires": { - "pify": "^2.3.0" + "license": "MIT", + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" } }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "license": "ISC", + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, - "requires": { - "picomatch": "^2.2.1" + "license": "MIT", + "optional": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true, - "requires": { - "minimatch": "^3.0.5" + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" } }, - "redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "node_modules/watchpack-chokidar2/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, - "requires": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "license": "MIT", + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, - "requires": { - "regenerate": "^1.4.2" + "license": "MIT", + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" } }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", - "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "node_modules/watchpack-chokidar2/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" + "license": "MIT", + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "license": "MIT", + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues", "dev": true, - "requires": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" } }, - "regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "node_modules/watchpack-chokidar2/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, + "license": "ISC", + "optional": true, "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "dev": true - }, - "renderkid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", - "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "dev": true, - "requires": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^6.0.1" + "license": "MIT", + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "node_modules/watchpack-chokidar2/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, - "requires": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" } }, - "resolve-cwd": { + "node_modules/watchpack-chokidar2/node_modules/is-number": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, - "requires": { - "resolve-from": "^5.0.0" + "license": "MIT", + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", - "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, - "requires": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^7.0.35", - "source-map": "0.6.1" - }, + "license": "MIT", + "optional": true, "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "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 - } + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/watchpack-chokidar2/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, - "requires": { - "glob": "^7.1.3" + "license": "MIT", + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "rollup": { - "version": "2.79.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", - "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, - "requires": { - "fsevents": "~2.3.2" + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" } }, - "rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, + "license": "MIT", + "optional": true, "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "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" - } - } + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "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==", + "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, - "requires": { - "queue-microtask": "^1.2.2" + "license": "MIT", + "dependencies": { + "minimalistic-assert": "^1.0.0" } }, - "safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" + "license": "BSD-2-Clause", + "engines": { + "node": ">=10.4" } }, - "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 + "node_modules/webpack": { + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } + } }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "node_modules/webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "license": "MIT", + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sanitize.css": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", - "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", - "dev": true - }, - "sass-loader": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", - "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "node_modules/webpack-dev-middleware/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, - "requires": { - "klona": "^2.0.4", - "neo-async": "^2.6.2" + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" } }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "node_modules/webpack-dev-server": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.1.tgz", + "integrity": "sha512-u4R3mRzZkbxQVa+MBWi2uVpB5W59H3ekZAJsQlKUTdl7Elcah2EhygTPLmeFXybQkf9i2+L0kn7ik9SnXa6ihQ==", "dev": true, - "requires": { - "xmlchars": "^2.2.0" + "license": "MIT", + "dependencies": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "node_modules/webpack-dev-server/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, - "requires": { - "loose-envify": "^1.1.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "node_modules/webpack-dev-server/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, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "select-hose": { + "node_modules/webpack-dev-server/node_modules/anymatch": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "license": "ISC", + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } }, - "selfsigned": { + "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "dev": true, - "requires": { - "node-forge": "^1" + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "semantic-ui-css": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/semantic-ui-css/-/semantic-ui-css-2.5.0.tgz", - "integrity": "sha512-jIWn3WXXE2uSaWCcB+gVJVRG3masIKtTMNEP2X8Aw909H2rHpXGneYOxzO3hT8TpyvB5/dEEo9mBFCitGwoj1A==", + "node_modules/webpack-dev-server/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true, - "requires": { - "jquery": "x.*" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "semantic-ui-less": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/semantic-ui-less/-/semantic-ui-less-2.5.0.tgz", - "integrity": "sha512-Nlp8iR0otCQB74Yqob2Dxpsm5H9YAp3NvQ3sWDediwFjrd/l3Leu9md2O82UU5n5hOSqu95xnTok55eIAhlTjg==", + "node_modules/webpack-dev-server/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, - "requires": { - "jquery": "x.*" + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "semantic-ui-react": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/semantic-ui-react/-/semantic-ui-react-2.1.4.tgz", - "integrity": "sha512-7CxjBoFUfH7fUvtn+SPkkIocthUD9kV3niF1mUMa9TbeyPAf2brtRCZBlT2OpHaXmkscFzGjEfhbJo9gKfotzQ==", + "node_modules/webpack-dev-server/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "requires": { - "@babel/runtime": "^7.10.5", - "@fluentui/react-component-event-listener": "~0.63.0", - "@fluentui/react-component-ref": "~0.63.0", - "@popperjs/core": "^2.6.0", - "@semantic-ui-react/event-stack": "^3.1.3", - "clsx": "^1.1.1", - "keyboard-key": "^1.1.0", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", - "prop-types": "^15.7.2", - "react-is": "^16.8.6 || ^17.0.0 || ^18.0.0", - "react-popper": "^2.3.0", - "shallowequal": "^1.1.0" + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, + "license": "MIT", "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" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" } }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "node_modules/webpack-dev-server/node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, + "license": "ISC", "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" } }, - "serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "node_modules/webpack-dev-server/node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, - "requires": { - "randombytes": "^2.1.0" + "license": "MIT", + "engines": { + "node": ">=6" } }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, + "license": "MIT", "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - } + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, - "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==", + "node_modules/webpack-dev-server/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, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" } }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true + "node_modules/webpack-dev-server/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" }, - "shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", - "dev": true + "node_modules/webpack-dev-server/node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true, + "license": "MIT" }, - "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==", + "node_modules/webpack-dev-server/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "dev": true, - "requires": { - "shebang-regex": "^3.0.0" + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "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==", + "node_modules/webpack-dev-server/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { + "node_modules/webpack-dev-server/node_modules/find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, - "requires": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-loader": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz", - "integrity": "sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==", + "node_modules/webpack-dev-server/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "Upgrade to fsevents v2 to mitigate potential security issues", "dev": true, - "requires": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.1" + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" } }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "node_modules/webpack-dev-server/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, + "license": "ISC", "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 - } + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "dev": true, - "requires": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "spdy-transport": { + "node_modules/webpack-dev-server/node_modules/has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "requires": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "node_modules/webpack-dev-server/node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, + "license": "MIT", "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" } }, - "stackframe": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", - "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 - }, - "stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "node_modules/webpack-dev-server/node_modules/is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", "dev": true, - "requires": { - "internal-slot": "^1.0.4" + "license": "MIT", + "engines": { + "node": ">=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==", + "node_modules/webpack-dev-server/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", "dev": true, - "requires": { - "safe-buffer": "~5.2.0" + "license": "MIT", + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "node_modules/webpack-dev-server/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "string-natural-compare": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", - "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", - "dev": true + "node_modules/webpack-dev-server/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "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==", + "node_modules/webpack-dev-server/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "license": "MIT", "dependencies": { - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - } + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "node_modules/webpack-dev-server/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "node_modules/webpack-dev-server/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "node_modules/webpack-dev-server/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "node_modules/webpack-dev-server/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" } }, - "stringify-object": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", - "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "node_modules/webpack-dev-server/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, - "requires": { - "get-own-enumerable-property-symbols": "^3.0.0", - "is-obj": "^1.0.1", - "is-regexp": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/webpack-dev-server/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, - "requires": { - "ansi-regex": "^5.0.1" + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", - "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", - "dev": true + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } }, - "strip-final-newline": { + "node_modules/webpack-dev-server/node_modules/resolve-cwd": { "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 + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } }, - "strip-indent": { + "node_modules/webpack-dev-server/node_modules/resolve-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, - "requires": { - "min-indent": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "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 + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } }, - "style-loader": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.2.tgz", - "integrity": "sha512-RHs/vcrKdQK8wZliteNK4NKzxvLBzpuHMqYmUVWeKa6MkaIQ97ZTOS0b+zapZhy6GcrgWnvWYCMHRirC3FsUmw==", + "node_modules/webpack-dev-server/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, - "requires": {} + "license": "MIT", + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } }, - "stylehacks": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", - "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "node_modules/webpack-dev-server/node_modules/string-width/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "dev": true, - "requires": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" + "license": "MIT", + "engines": { + "node": ">=6" } }, - "sucrase": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", - "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==", + "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" + "license": "MIT", + "dependencies": { + "ansi-regex": "^4.1.0" }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/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": { - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/webpack-dev-server/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "node_modules/webpack-dev-server/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, + "license": "MIT", "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" - } - } + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "svg-parser": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", - "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", - "dev": true - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "node_modules/webpack-dev-server/node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, + "license": "MIT", "dependencies": { - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - } - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - } + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" } }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "tailwindcss": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", - "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==", - "dev": true, - "requires": { - "@alloc/quick-lru": "^5.2.0", - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.18.2", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", - "postcss-import": "^15.1.0", - "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" - } - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "dev": true + "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "tempy": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", - "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, - "requires": { - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, + "license": "MIT", "dependencies": { - "type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "dev": true - } + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" } }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" } }, - "terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "node_modules/webpack-dev-server/node_modules/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, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, + "license": "ISC" + }, + "node_modules/webpack-dev-server/node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "license": "MIT", "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 - } + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" } }, - "terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "node_modules/webpack-dev-server/node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } }, - "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==", + "node_modules/webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "license": "MIT", + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" } }, - "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 - }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "node_modules/webpack-log/node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", "dev": true, - "requires": { - "any-promise": "^1.0.0" + "license": "MIT", + "engines": { + "node": ">=6" } }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "node_modules/webpack-log/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, - "requires": { - "thenify": ">= 3.1.0 < 4" + "license": "MIT", + "bin": { + "uuid": "bin/uuid" } }, - "throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "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 - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", - "dev": true - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true + "node_modules/webpack-manifest-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", + "integrity": "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fs-extra": "^7.0.0", + "lodash": ">=3.5 <5", + "object.entries": "^1.1.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.11.5" + }, + "peerDependencies": { + "webpack": "2 || 3 || 4" + } }, - "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 + "node_modules/webpack-manifest-plugin/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } }, - "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==", + "node_modules/webpack-manifest-plugin/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "requires": { - "is-number": "^7.0.0" + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "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 + "node_modules/webpack-manifest-plugin/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } }, - "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, + "license": "MIT", "dependencies": { - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - } + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" } }, - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "node_modules/webpack/node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true, - "requires": { - "punycode": "^2.1.1" + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "tryer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", - "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", - "dev": true - }, - "ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "node_modules/webpack/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } }, - "tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "node_modules/webpack/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack/node_modules/cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "license": "ISC", "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "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 - } + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" } }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true + "node_modules/webpack/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "license": "ISC" }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/webpack/node_modules/eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", "dev": true, - "requires": { - "tslib": "^1.8.1" - }, + "license": "BSD-2-Clause", "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=4.0.0" } }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "requires": { - "prelude-ls": "^1.2.1" + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true + "node_modules/webpack/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "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 + "node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/webpack/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "node_modules/webpack/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "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==", + "node_modules/webpack/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "dev": true, - "requires": { - "is-typedarray": "^1.0.0" + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "node_modules/webpack/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "dev": true, - "peer": true + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "unbox-primitive": { + "node_modules/webpack/node_modules/json5": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/webpack/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" } }, - "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==", + "node_modules/webpack/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true - }, - "unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "node_modules/webpack/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "requires": { - "crypto-random-string": "^2.0.0" + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" } }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "unpipe": { + "node_modules/webpack/node_modules/schema-utils": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", - "dev": true - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "license": "MIT", + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" } }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/webpack/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, - "requires": { - "punycode": "^2.1.0" + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" } }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "node_modules/webpack/node_modules/ssri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", + "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "license": "ISC", + "dependencies": { + "figgy-pudding": "^3.5.1" } }, - "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 - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.6.tgz", + "integrity": "sha512-2lBVf/VMVIddjSn3GqbT90GvIJ/eYXJkt8cTzU7NbjKqK8fwv18Ftr4PlbF46b/e88743iZFL5Dtr/rC4hjIeA==", "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" + "license": "MIT", + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, - "utila": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "node_modules/webpack/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true + "node_modules/webpack/node_modules/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, + "license": "ISC" }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "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, - "requires": { - "browser-process-hrtime": "^1.0.0" + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" } }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "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, - "requires": { - "xml-name-validator": "^3.0.0" + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" } }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, - "requires": { - "makeerror": "1.0.12" + "license": "MIT", + "dependencies": { + "iconv-lite": "0.4.24" } }, - "warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } + "license": "MIT" }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" + "license": "MIT", + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" } }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "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, - "requires": { - "minimalistic-assert": "^1.0.0" + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "webpack": { - "version": "5.81.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", - "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.13.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "dependencies": { - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "webpack-dev-middleware": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", - "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.3", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - } - } + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "webpack-dev-server": { - "version": "4.13.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.13.3.tgz", - "integrity": "sha512-KqqzrzMRSRy5ePz10VhjyL27K2dxqwXQLP5rAKwRJBPUahe7Z2bBWzHw37jeb8GCPKxZRO79ZdQUAPesMh/Nug==", - "dev": true, - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.13.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - } - }, - "ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "requires": {} - } + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "webpack-manifest-plugin": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz", - "integrity": "sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, - "requires": { - "tapable": "^2.0.0", - "webpack-sources": "^2.2.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dev": true, - "requires": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - } - } + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "node_modules/workbox-background-sync": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-5.1.4.tgz", + "integrity": "sha512-AH6x5pYq4vwQvfRDWH+vfOePfPIYQ00nCEB7dJRU1e0n9+9HMRyvI63FlDvtFT2AvXVRsXvUt7DNMEToyJLpSA==", "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" } }, - "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-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "node_modules/workbox-broadcast-update": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-5.1.4.tgz", + "integrity": "sha512-HTyTWkqXvHRuqY73XrwvXPud/FN6x3ROzkfFPsRjtw/kGZuZkPzfeH531qdUGfhtwjmtO/ZzXcWErqVzJNdXaA==", "dev": true, - "requires": { - "iconv-lite": "0.4.24" - }, + "license": "MIT", "dependencies": { - "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" - } - } + "workbox-core": "^5.1.4" } }, - "whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", - "dev": true - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" + "node_modules/workbox-build": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-5.1.4.tgz", + "integrity": "sha512-xUcZn6SYU8usjOlfLb9Y2/f86Gdo+fy1fXgH8tJHjxgpo53VVsqRX0lUDw8/JuyzNmXuo8vXX14pXX2oIm9Bow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.8.4", + "@babel/preset-env": "^7.8.4", + "@babel/runtime": "^7.8.4", + "@hapi/joi": "^15.1.0", + "@rollup/plugin-node-resolve": "^7.1.1", + "@rollup/plugin-replace": "^2.3.1", + "@surma/rollup-plugin-off-main-thread": "^1.1.1", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.6", + "lodash.template": "^4.5.0", + "pretty-bytes": "^5.3.0", + "rollup": "^1.31.1", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-terser": "^5.3.1", + "source-map": "^0.7.3", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "tempy": "^0.3.0", + "upath": "^1.2.0", + "workbox-background-sync": "^5.1.4", + "workbox-broadcast-update": "^5.1.4", + "workbox-cacheable-response": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-expiration": "^5.1.4", + "workbox-google-analytics": "^5.1.4", + "workbox-navigation-preload": "^5.1.4", + "workbox-precaching": "^5.1.4", + "workbox-range-requests": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4", + "workbox-streams": "^5.1.4", + "workbox-sw": "^5.1.4", + "workbox-window": "^5.1.4" + }, + "engines": { + "node": ">=8.0.0" } }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, - "requires": { - "isexe": "^2.0.0" + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" } }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "node_modules/workbox-build/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, - "requires": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" } }, - "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "node_modules/workbox-build/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "license": "MIT", + "engines": { + "node": ">= 4.0.0" } }, - "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 - }, - "workbox-background-sync": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz", - "integrity": "sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==", + "node_modules/workbox-cacheable-response": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-5.1.4.tgz", + "integrity": "sha512-0bfvMZs0Of1S5cdswfQK0BXt6ulU5kVD4lwer2CeI+03czHprXR3V4Y8lPTooamn7eHP8Iywi5QjyAMjw0qauA==", "dev": true, - "requires": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" } }, - "workbox-broadcast-update": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz", - "integrity": "sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==", + "node_modules/workbox-core": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-5.1.4.tgz", + "integrity": "sha512-+4iRQan/1D8I81nR2L5vcbaaFskZC2CL17TLbvWVzQ4qiF/ytOGF6XeV54pVxAvKUtkLANhk8TyIUMtiMw2oDg==", "dev": true, - "requires": { - "workbox-core": "6.5.4" - } + "license": "MIT" }, - "workbox-build": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz", - "integrity": "sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==", + "node_modules/workbox-expiration": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-5.1.4.tgz", + "integrity": "sha512-oDO/5iC65h2Eq7jctAv858W2+CeRW5e0jZBMNRXpzp0ZPvuT6GblUiHnAsC5W5lANs1QS9atVOm4ifrBiYY7AQ==", "dev": true, - "requires": { - "@apideck/better-ajv-errors": "^0.3.1", - "@babel/core": "^7.11.1", - "@babel/preset-env": "^7.11.0", - "@babel/runtime": "^7.11.2", - "@rollup/plugin-babel": "^5.2.0", - "@rollup/plugin-node-resolve": "^11.2.1", - "@rollup/plugin-replace": "^2.4.1", - "@surma/rollup-plugin-off-main-thread": "^2.2.3", - "ajv": "^8.6.0", - "common-tags": "^1.8.0", - "fast-json-stable-stringify": "^2.1.0", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "lodash": "^4.17.20", - "pretty-bytes": "^5.3.0", - "rollup": "^2.43.1", - "rollup-plugin-terser": "^7.0.0", - "source-map": "^0.8.0-beta.0", - "stringify-object": "^3.3.0", - "strip-comments": "^2.0.1", - "tempy": "^0.6.0", - "upath": "^1.2.0", - "workbox-background-sync": "6.5.4", - "workbox-broadcast-update": "6.5.4", - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-google-analytics": "6.5.4", - "workbox-navigation-preload": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-range-requests": "6.5.4", - "workbox-recipes": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4", - "workbox-streams": "6.5.4", - "workbox-sw": "6.5.4", - "workbox-window": "6.5.4" - }, - "dependencies": { - "@apideck/better-ajv-errors": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", - "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", - "dev": true, - "requires": { - "json-schema": "^0.4.0", - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - } - }, - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "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", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "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 - }, - "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" - } - }, - "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" - } - }, - "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 - }, - "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", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" } }, - "workbox-cacheable-response": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz", - "integrity": "sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==", + "node_modules/workbox-google-analytics": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-5.1.4.tgz", + "integrity": "sha512-0IFhKoEVrreHpKgcOoddV+oIaVXBFKXUzJVBI+nb0bxmcwYuZMdteBTp8AEDJacENtc9xbR0wa9RDCnYsCDLjA==", + "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained", "dev": true, - "requires": { - "workbox-core": "6.5.4" + "license": "MIT", + "dependencies": { + "workbox-background-sync": "^5.1.4", + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4", + "workbox-strategies": "^5.1.4" } }, - "workbox-core": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz", - "integrity": "sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==", - "dev": true - }, - "workbox-expiration": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz", - "integrity": "sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==", + "node_modules/workbox-navigation-preload": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-5.1.4.tgz", + "integrity": "sha512-Wf03osvK0wTflAfKXba//QmWC5BIaIZARU03JIhAEO2wSB2BDROWI8Q/zmianf54kdV7e1eLaIEZhth4K4MyfQ==", "dev": true, - "requires": { - "idb": "^7.0.1", - "workbox-core": "6.5.4" + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" } }, - "workbox-google-analytics": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz", - "integrity": "sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==", + "node_modules/workbox-precaching": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-5.1.4.tgz", + "integrity": "sha512-gCIFrBXmVQLFwvAzuGLCmkUYGVhBb7D1k/IL7pUJUO5xacjLcFUaLnnsoVepBGAiKw34HU1y/YuqvTKim9qAZA==", "dev": true, - "requires": { - "workbox-background-sync": "6.5.4", - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" } }, - "workbox-navigation-preload": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz", - "integrity": "sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==", + "node_modules/workbox-range-requests": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-5.1.4.tgz", + "integrity": "sha512-1HSujLjgTeoxHrMR2muDW2dKdxqCGMc1KbeyGcmjZZAizJTFwu7CWLDmLv6O1ceWYrhfuLFJO+umYMddk2XMhw==", "dev": true, - "requires": { - "workbox-core": "6.5.4" + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" } }, - "workbox-precaching": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz", - "integrity": "sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==", + "node_modules/workbox-routing": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-5.1.4.tgz", + "integrity": "sha512-8ljknRfqE1vEQtnMtzfksL+UXO822jJlHTIR7+BtJuxQ17+WPZfsHqvk1ynR/v0EHik4x2+826Hkwpgh4GKDCw==", "dev": true, - "requires": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" } }, - "workbox-range-requests": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz", - "integrity": "sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==", + "node_modules/workbox-strategies": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-5.1.4.tgz", + "integrity": "sha512-VVS57LpaJTdjW3RgZvPwX0NlhNmscR7OQ9bP+N/34cYMDzXLyA6kqWffP6QKXSkca1OFo/v6v7hW7zrrguo6EA==", "dev": true, - "requires": { - "workbox-core": "6.5.4" + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" } }, - "workbox-recipes": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz", - "integrity": "sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==", + "node_modules/workbox-streams": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-5.1.4.tgz", + "integrity": "sha512-xU8yuF1hI/XcVhJUAfbQLa1guQUhdLMPQJkdT0kn6HP5CwiPOGiXnSFq80rAG4b1kJUChQQIGPrq439FQUNVrw==", "dev": true, - "requires": { - "workbox-cacheable-response": "6.5.4", - "workbox-core": "6.5.4", - "workbox-expiration": "6.5.4", - "workbox-precaching": "6.5.4", - "workbox-routing": "6.5.4", - "workbox-strategies": "6.5.4" + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4", + "workbox-routing": "^5.1.4" } }, - "workbox-routing": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz", - "integrity": "sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==", + "node_modules/workbox-sw": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-5.1.4.tgz", + "integrity": "sha512-9xKnKw95aXwSNc8kk8gki4HU0g0W6KXu+xks7wFuC7h0sembFnTrKtckqZxbSod41TDaGh+gWUA5IRXrL0ECRA==", "dev": true, - "requires": { - "workbox-core": "6.5.4" - } + "license": "MIT" }, - "workbox-strategies": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz", - "integrity": "sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==", + "node_modules/workbox-webpack-plugin": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-5.1.4.tgz", + "integrity": "sha512-PZafF4HpugZndqISi3rZ4ZK4A4DxO8rAqt2FwRptgsDx7NF8TVKP86/huHquUsRjMGQllsNdn4FNl8CD/UvKmQ==", "dev": true, - "requires": { - "workbox-core": "6.5.4" + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "fast-json-stable-stringify": "^2.0.0", + "source-map-url": "^0.4.0", + "upath": "^1.1.2", + "webpack-sources": "^1.3.0", + "workbox-build": "^5.1.4" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, - "workbox-streams": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz", - "integrity": "sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==", + "node_modules/workbox-window": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-5.1.4.tgz", + "integrity": "sha512-vXQtgTeMCUq/4pBWMfQX8Ee7N2wVC4Q7XYFqLnfbXJ2hqew/cU1uMTD2KqGEgEpE4/30luxIxgE+LkIa8glBYw==", "dev": true, - "requires": { - "workbox-core": "6.5.4", - "workbox-routing": "6.5.4" + "license": "MIT", + "dependencies": { + "workbox-core": "^5.1.4" } }, - "workbox-sw": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz", - "integrity": "sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==", - "dev": true - }, - "workbox-webpack-plugin": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz", - "integrity": "sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==", + "node_modules/worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", "dev": true, - "requires": { - "fast-json-stable-stringify": "^2.1.0", - "pretty-bytes": "^5.4.1", - "upath": "^1.2.0", - "webpack-sources": "^1.4.3", - "workbox-build": "6.5.4" - }, + "license": "MIT", "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } + "errno": "~0.1.7" } }, - "workbox-window": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz", - "integrity": "sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==", + "node_modules/worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", "dev": true, - "requires": { - "@types/trusted-types": "^2.0.2", - "workbox-core": "6.5.4" + "license": "MIT", + "dependencies": { + "microevent.ts": "~0.1.1" } }, - "wrap-ansi": { + "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, - "write-file-atomic": { + "node_modules/write-file-atomic": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, - "requires": {} + "license": "MIT", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "xml-name-validator": { + "node_modules/xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, - "xmlchars": { + "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } }, - "y18n": { + "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } }, - "yallist": { + "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, - "yaml": { + "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 + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } }, - "yargs": { + "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, - "requires": { + "license": "MIT", + "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", @@ -35005,19 +30257,53 @@ "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, - "yargs-parser": { + "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 + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } }, - "yocto-queue": { + "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 + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yup": { + "version": "0.32.11", + "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", + "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.15.4", + "@types/lodash": "^4.14.175", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "nanoclone": "^0.2.1", + "property-expr": "^2.0.4", + "toposort": "^2.0.2" + }, + "engines": { + "node": ">=10" + } } } } diff --git a/package.json b/package.json index 1c93a6d95..fc5e96df1 100644 --- a/package.json +++ b/package.json @@ -1,28 +1,47 @@ { + "config": { + "languages": ["en"] + }, "devDependencies": { + "@artsy/fresnel": "^6.1.0", + "@babel/core": "^7.26.10", "@babel/preset-env": "^7.21.4", "@babel/preset-react": "^7.18.6", + "@reduxjs/toolkit": "^2.6.1", "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^14.0.0", + "@testing-library/react": "^12.1.5", "babel-jest": "^29.5.0", "formik": "^2.2.9", + "i18next": "^20.6.1", + "i18next-browser-languagedetector": "^6.1.8", + "i18next-conv": "^15.1.1", + "i18next-scanner": "^4.6.0", + "identity-obj-proxy": "^3.0.0", "jest": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", "prop-types": "^15.8.1", - "react-scripts": "^5.0.1", - "react-test-renderer": "^18.2.0", + "react": "^16.13.0", + "react-dnd": "^11.1.3", + "react-dnd-html5-backend": "^11.1.3", + "react-dom": "^16.13.0", + "react-dropzone": "^11.7.1", + "react-i18next": "^11.18.6", + "react-invenio-forms": "^4.8.2", + "react-redux": "^7.2.9", + "react-scripts": "^4.0.3", + "react-searchkit": "^3.0.0", + "react-test-renderer": "^16.13.0", + "redux": "^4.2.1", + "redux-thunk": "^2.4.2", "semantic-ui-css": "^2.5.0", "semantic-ui-less": "^2.5.0", "semantic-ui-react": "^2.1.4" }, "scripts": { - "test": "jest" - }, - "jest": { - "verbose": true, - "roots": [ - "/assets/", - "/site" - ], - "testEnvironment": "jsdom" + "test": "jest", + "test:watch": "jest --watch", + "test:coverage": "jest --coverage", + "test:update": "jest -u", + "test:file": "jest --testPathPattern" } } diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..769bf6201 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,290 @@ +[build-system] +requires = ["setuptools>=61.0", "wheel", "babel>2.8"] +build-backend = "setuptools.build_meta" + +[project] +name = "kcworks" +version = "0.4.0-beta12" +requires-python = ">=3.12" +dependencies = [ + "aiohttp>=3.11.15", + "async-timeout>=4.0.3", + "flask-admin==1.6.1", + "flask-babelex", + "flask-breadcrumbs", + "flask-principal", + "halo", + "invenio-app-rdm>=12.0.0,<13.0.0", + "invenio-communities==13.0.3", + "invenio-group-collections-kcworks", + "invenio-modular-deposit-form", + "invenio-modular-detail-page", + "invenio-rdm-records==10.9.1", + "invenio-record-importer-kcworks", + "invenio-records-resources==5.10.0", + "invenio-remote-api-provisioner", + "invenio-logging[sentry]==2.1.5", + "invenio-s3", + "invenio-saml", + "invenio-subjects-fast", + "invenio-utilities-tuw", + "isbnlib", + "langdetect", + "lxml==5.2.1", + "numpy", + "pip", + "pluggy<1.0,>=0.10.0", + "pytest-invenio<3.0.0", + "python-dotenv", + "python-iso639", + "python-stdnum", + "selenium", + "sqlalchemy[asyncio]", + "timefhuman", + "titlecase", + "tqdm", + "unidecode", + "flask-iiif", + "sentry-sdk[flask]>=1.0.0,<2.0.0", + "pydantic", + "xmlsec==1.3.14", + "invenio-remote-user-data-kcworks", + "uwsgi>=2.0.23", +] + +[project.optional-dependencies] +tests = [ + "pytest-invenio>=2.1.0,<3.0.0", + "pytest-ruff>=0.1.0", + "pytest-mypy>=0.10.0", + "pytest-black>=0.6.0", + "pytest-isort>=4.0.0", + "pytest-mock", +] +dev = [ + "halo", + "jsonlines", + "sphinx", + "myst-parser", + "furo", + "black>=25.1.0", + "djlint>=1.36.4", + "psycopg2-binary>=2.9.10", + "requests-mock", + "check-manifest>=0.25", + "selenium", + "docker-services-cli", + "ruff>=0.3.0", + "mypy>=1.8.0", + "sphinx-copybutton>=0.5.2", +] + +[tool.uv.sources] +kcworks = {path = "./site", editable = true} +invenio-communities = {path = "./site/kcworks/dependencies/invenio-communities", editable = true} +invenio-group-collections-kcworks = {path = "./site/kcworks/dependencies/invenio-group-collections-kcworks", editable = true} +invenio-modular-deposit-form = {path = "./site/kcworks/dependencies/invenio-modular-deposit-form", editable = true} +invenio-modular-detail-page = {path = "./site/kcworks/dependencies/invenio-modular-detail-page", editable = true} +invenio-rdm-records = {path = "./site/kcworks/dependencies/invenio-rdm-records", editable = true} +invenio-records-resources = {path = "./site/kcworks/dependencies/invenio-records-resources", editable = true} +invenio-remote-api-provisioner = {path = "./site/kcworks/dependencies/invenio-remote-api-provisioner", editable = true} +invenio-record-importer-kcworks = {path = "./site/kcworks/dependencies/invenio-record-importer-kcworks", editable = true} +invenio-remote-user-data-kcworks = { path = "site/kcworks/dependencies/invenio-remote-user-data-kcworks", editable = true } + +[tool.setuptools] +package-dir = {"" = "site"} + +[tool.setuptools.package-data] +"*" = ["*.po", "*.pot", "*.mo"] + +[tool.hatch.build.targets.wheel] +packages = ["site"] + +[tool.hatch.metadata] +allow-direct-references = true + +[project.entry-points."invenio_base.apps"] +kcworks = "kcworks.ext:KCWorks" + +[project.entry-points."invenio_base.api_apps"] +kcworks = "kcworks.ext:KCWorks" + +[project.entry-points."invenio_base.api_blueprints"] +kcworks_api = "kcworks.views.views:create_api_blueprint" + +[project.entry-points."invenio_base.blueprints"] +kcworks_views = "kcworks.views.views:create_blueprint" +knowledge_commons_works_menu = "kcworks.blueprints.menu_customization:create_blueprint" +kcworks_stats_dashboard_view = "kcworks.stats_dashboard.views:create_blueprint" + +[project.entry-points."invenio_assets.webpack"] +kcworks_theme = "kcworks.webpack:theme" + +[project.entry-points."invenio_previewer.previewers"] +custom_pdf_viewer = "kcworks.views.previewers.invenio_custom_pdf_viewer.custom_pdf_viewer" +custom_default_viewer = "kcworks.views.previewers.invenio_custom_default_viewer.custom_default_viewer" +custom_docx_viewer = "kcworks.views.previewers.invenio_custom_docx_viewer.custom_docx_viewer" +custom_pptx_viewer = "kcworks.views.previewers.invenio_custom_pptx_viewer.custom_pptx_viewer" +custom_latex_viewer = "kcworks.views.previewers.invenio_custom_latex_viewer.custom_latex_viewer" + +[project.entry-points."invenio_search.index_templates"] +kcworks = "kcworks.services.search.index_templates.templates:get_index_templates" + +[project.entry-points."flask.commands"] +kcworks-users = "kcworks.cli:kcworks_users" +kcworks-index = "kcworks.cli:kcworks_index" + +[project.scripts] +kcworks-users = "kcworks.cli:kcworks_users" +kcworks-index = "kcworks.cli:kcworks_index" + +[tool.ruff] +line-length = 88 +target-version = "py312" + +[tool.ruff.per-file-ignores] +"__init__.py" = ["F401", "D104", "E402"] +"tests/api/test_stats.py" = ["C416"] + +[tool.ruff.lint] +# temporarily removed C for complexity checks +select = ["E", "F", "I", "B", "UP", "D", "DOC"] +# Ignore formatting-related rules (let black handle these) +ignore = [ + "E501", # Line too long + "I001", # Import sorting + "E1", # Indentation + # "E2", # Whitespace + # "E3", # Blank lines + "W1", # Indentation warnings + "W2", # Whitespace warnings + "W3", # Blank line warnings + # "COM", # Trailing comma rules + # "ISC", # Implicit string concatenation + # "Q", # Quotes +] + +[tool.ruff.lint.pydocstyle] +convention = "google" + +[tool.mypy] +python_version = "3.12" +warn_return_any = true +warn_unused_configs = true +disallow_untyped_defs = false +disallow_incomplete_defs = false +check_untyped_defs = true +disallow_untyped_decorators = false +no_implicit_optional = true +warn_redundant_casts = true +warn_unused_ignores = false +warn_no_return = false +ignore_missing_imports = true +follow_imports = "skip" +allow_untyped_globals = true +exclude = [ + '^tests/', + '^site/kcworks/dependencies/', + '^site/kcworks/stats_dashboard/', + '^site/kcworks/services/search/index_templates/', +] + +[[tool.mypy.overrides]] +module = "kcworks.services.search.index_templates.*" +ignore_errors = true +ignore_missing_imports = true +follow_imports = "skip" + +[tool.isort] +profile = "black" +line_length = 88 +verbose = true +multi_line_output = 3 # Vertical hanging indent +include_trailing_comma = true +force_grid_wrap = 0 +use_parentheses = true +ensure_newline_before_comments = true +split_on_trailing_comma = true + +[tool.pytest.ini_options] +addopts = """ +--black --ruff --isort --doctest-modules +--ignore=app_data +--ignore=docs +--ignore=node_modules +--ignore=scripts +--ignore=tests/helpers +--ignore=site/kcworks/dependencies +--ignore=site/kcworks/stats_dashboard +--ignore=site/kcworks/services/search/index_templates +--cov=kcworks --cov-report=term-missing +""" +norecursedirs = ["site/kcworks/services/search/index_templates/records/os-v2"] +log_cli_level = "DEBUG" +isort_show_files = true +plugins = [ + "tests.fixtures.communities", + "tests.fixtures.custom_fields", + "tests.fixtures.identifiers", + "tests.fixtures.mail", + "tests.fixtures.metadata_fields", + "tests.fixtures.records", + "tests.fixtures.roles", + "tests.fixtures.saml", + "tests.fixtures.search_provisioning", + "tests.fixtures.stats", + "tests.fixtures.users", + "tests.fixtures.vocabularies.affiliations", + "tests.fixtures.vocabularies.community_types", + "tests.fixtures.vocabularies.date_types", + "tests.fixtures.vocabularies.descriptions", + "tests.fixtures.vocabularies.funding_and_awards", + "tests.fixtures.vocabularies.languages", + "tests.fixtures.vocabularies.licenses", + "tests.fixtures.vocabularies.resource_types", + "tests.fixtures.vocabularies.roles", + "tests.fixtures.vocabularies.subjects", +] + +[dependency-groups] +dev = [ + "black>=25.1.0", + "djlint>=1.36.4", + "psycopg2-binary>=2.9.10", + "pytest-black>=0.6.0", + "pytest-isort>=4.0.0", + "requests-mock", + "check-manifest>=0.25", + "selenium", + "docker-services-cli", + "pytest-mock", + "ruff>=0.3.0", + "mypy>=1.8.0", +] + +[tool.coverage.run] +omit = [ + "site/kcworks/dependencies/*", + "site/kcworks/views/task_results/*", + "site/kcworks/stats_dashboard/*", + "site/kcworks/services/search/index_templates/*", +] + +[tool.babel.compile_catalog] +directory = "translations/" +use-fuzzy = true + +[tool.babel.extract_messages] +copyright_holder = "Mesh Research" +msgid_bugs_address = "scottia4@msu.edu" +mapping-file = "translations/babel.ini" +output-file = "translations/messages.pot" +add-comments = "NOTE" + +[tool.babel.init_catalog] +input-file = "translations/messages.pot" +output-dir = "translations/" + +[tool.babel.update_catalog] +input-file = "translations/messages.pot" +output-dir = "translations/" diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 000000000..c8135def3 --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,11 @@ +-r requirements.txt +check-manifest>=0.25 +halo +jsonlines +requests-mock +selenium +docker-services-cli +sphinx +myst-parser +furo +pytest-mock \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..f157875a9 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,370 @@ +-i https://pypi.org/simple +aiohappyeyeballs==2.4.4; python_version >= '3.8' +aiohttp==3.11.11; python_version >= '3.9' +aiosignal==1.3.2; python_version >= '3.9' +alabaster==0.7.16; python_version >= '3.9' +alembic==1.10.4; python_version >= '3.7' +amqp==5.3.1; python_version >= '3.6' +aniso8601==10.0.0 +annotated-types==0.7.0; python_version >= '3.8' +appdirs==1.4.4 +arrow==1.3.0; python_version >= '3.8' +asttokens==3.0.0; python_version >= '3.8' +async-timeout==5.0.1; python_version >= '3.8' +attrs==24.3.0; python_version >= '3.8' +babel==2.16.0; python_version >= '3.8' +babel-edtf==1.2.1 +base32-lib==1.0.2 +beautifulsoup4==4.12.3; python_full_version >= '3.6.0' +bibtexparser==1.4.3 +billiard==4.2.1; python_version >= '3.7' +binaryornot==0.4.4 +bleach[css]==6.2.0; python_version >= '3.9' +blinker==1.9.0; python_version >= '3.9' +boto3==1.36.2; python_version >= '3.8' +botocore==1.36.2; python_version >= '3.8' +build==1.2.2.post1; python_version >= '3.8' +cachelib==0.9.0; python_version >= '3.7' +cairocffi==1.7.1; python_version >= '3.8' +cairosvg==2.7.1; python_version >= '3.5' +celery==5.3.6; python_version >= '3.8' +certifi==2024.12.14; python_version >= '3.6' +cffi==1.17.1; python_version >= '3.8' +chardet==5.2.0; python_version >= '3.7' +charset-normalizer==3.4.1; python_version >= '3.7' +check-manifest==0.50; python_version >= '3.7' +citeproc-py==0.6.0; python_version >= '3.6' +citeproc-py-styles==0.1.3 +click==8.1.8; python_version >= '3.7' +click-default-group==1.2.4; python_version >= '2.7' +click-didyoumean==0.3.1; python_full_version >= '3.6.2' +click-plugins==1.1.1 +click-repl==0.3.0; python_version >= '3.6' +colorama==0.4.6; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' +commonmark==0.9.1 +commonmeta-py==0.8.6; python_version >= '3.9' and python_full_version < '4.0.0' +cookiecutter==2.1.1; python_version >= '3.7' +counter-robots==2018.6 +coverage[toml]==7.6.10; python_version >= '3.9' +cryptography==44.0.0; python_version >= '3.7' and python_full_version not in '3.9.0, 3.9.1' +cssselect2==0.7.0; python_version >= '3.7' +datacite==1.2.0 +dateparser==1.2.0; python_version >= '3.7' +dcxml==0.1.2 +decorator==5.1.1; python_version >= '3.5' +deepdiff==8.1.1; python_version >= '3.8' +defusedxml==0.7.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +deprecated==1.2.15; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +dictdiffer==0.9.0 +distlib==0.3.9 +dnspython==2.7.0; python_version >= '3.9' +docker==7.1.0; python_version >= '3.8' +docker-services-cli==0.10.1; python_version >= '3.8' +docutils==0.19; python_version >= '3.7' +dojson==1.5.0 +edtf==5.0.0; python_version >= '3.8' +email-validator==2.2.0; python_version >= '3.8' +events==0.5 +exceptiongroup==1.2.2; python_version >= '3.7' +executing==2.1.0; python_version >= '3.8' +faker==33.3.1; python_version >= '3.8' +fastjsonschema==2.21.1 +filelock==3.16.1; python_version >= '3.8' +flask==2.2.5; python_version >= '3.7' +flask-admin==1.6.1; python_version >= '3.6' +flask-alembic==2.0.1 +flask-babel==4.0.0; python_version >= '3.8' and python_version < '4.0' +flask-babelex==0.9.4 +flask-breadcrumbs==0.5.1 +flask-caching==2.3.0; python_version >= '3.8' +flask-celeryext==0.5.0; python_version >= '3.6' +flask-collect-invenio==1.4.0 +flask-cors==5.0.0 +flask-iiif==1.2.0; python_version >= '3.7' +flask-kvsession-invenio==0.6.4 +flask-limiter==2.9.2; python_version >= '3.7' +flask-login==0.6.3; python_version >= '3.7' +flask-mail==0.9.1 +flask-menu==1.0.1; python_version >= '3.7' +flask-oauthlib==0.9.6 +flask-principal==0.4.0 +flask-resources==1.2.0; python_version >= '3.7' +flask-restful==0.3.10 +flask-security-invenio==3.4.0; python_version >= '3.6' +flask-shell-ipython==0.5.3; python_version >= '3.8' and python_version < '4.0' +flask-sqlalchemy==2.5.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +flask-talisman==0.8.1 +flask-webpackext==2.0.0; python_version >= '3.7' +flask-wtf==1.2.2; python_version >= '3.9' +frozenlist==1.5.0; python_version >= '3.8' +fs==2.4.16 +fsspec==2024.12.0; python_version >= '3.8' +ftfy==4.4.3 +future==1.0.0; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2' +geojson==3.2.0; python_version >= '3.7' +ghp-import==2.1.0 +github3.py==4.0.1; python_version >= '3.7' +greenlet==3.1.1; python_version >= '3.7' +halo==0.0.31; python_version >= '3.4' +html5lib==1.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +humanize==4.11.0; python_version >= '3.9' +idna==3.10; python_version >= '3.6' +idutils==1.4.2; python_version >= '3.7' +imagesize==1.4.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +importlib-metadata==7.2.1; python_version >= '3.8' +importlib-resources==6.5.2; python_version >= '3.9' +infinity==1.5 +iniconfig==2.0.0; python_version >= '3.7' +intervals==0.9.2 +invenio-access==2.1.0; python_version >= '3.7' +invenio-accounts==5.1.7; python_version >= '3.7' +invenio-admin==1.4.1; python_version >= '3.7' +invenio-administration==2.2.4; python_version >= '3.7' +invenio-app==1.5.1; python_version >= '3.7' +invenio-app-rdm[opensearch2]==12.0.13; python_version >= '3.7' +invenio-assets==3.1.0; python_version >= '3.7' +invenio-banners==3.2.0; python_version >= '3.7' +invenio-base==1.4.0; python_version >= '3.7' +invenio-cache==1.3.1; python_version >= '3.7' +invenio-celery==1.3.2; python_version >= '3.7' +invenio-cli==1.5.0; python_version >= '3.7' +-e ./site/kcworks/dependencies/invenio-communities ; python_version >= '3.8' +invenio-config==1.0.4; python_version >= '3.7' +invenio-db[mysql,postgresql]==1.3.1; python_version >= '3.7' +invenio-drafts-resources==3.2.0; python_version >= '3.7' +invenio-files-rest==2.2.4; python_version >= '3.7' +invenio-formatter==2.0.4; python_version >= '3.8' +invenio-github==1.5.4; python_version >= '3.7' +-e ./site/kcworks/dependencies/invenio-group-collections-kcworks +invenio-i18n==2.1.2; python_version >= '3.7' +invenio-indexer==2.4.0; python_version >= '3.7' +invenio-jsonschemas==1.1.5; python_version >= '3.7' +invenio-logging==2.1.1; python_version >= '3.8' +invenio-mail==2.2.0; python_version >= '3.7' +-e ./site/kcworks/dependencies/invenio-modular-deposit-form +-e ./site/kcworks/dependencies/invenio-modular-detail-page +invenio-notifications==0.6.1; python_version >= '3.7' +invenio-oaiserver==2.3.0; python_version >= '3.7' +invenio-oauth2server==2.4.1; python_version >= '3.7' +invenio-oauthclient==4.1.3; python_version >= '3.7' +invenio-pages==4.1.2; python_version >= '3.7' +invenio-pidstore==1.3.4; python_version >= '3.7' +invenio-previewer==2.2.2; python_version >= '3.7' +invenio-queues==1.0.1; python_version >= '3.6' +-e ./site/kcworks/dependencies/invenio-rdm-records ; python_version >= '3.7' +-e ./site/kcworks/dependencies/invenio-record-importer-kcworks +invenio-records==2.4.1; python_version >= '3.7' +invenio-records-files==1.2.1 +invenio-records-permissions==0.21.0; python_version >= '3.7' +-e ./site/kcworks/dependencies/invenio-records-resources ; python_version >= '3.7' +invenio-records-rest==2.4.1; python_version >= '3.7' +invenio-records-ui==1.2.2; python_version >= '3.7' +-e ./site/kcworks/dependencies/invenio-remote-api-provisioner +-e ./site/kcworks/dependencies/invenio-remote-user-data-kcworks +invenio-requests==4.1.2; python_version >= '3.7' +invenio-rest==1.5.0; python_version >= '3.7' +invenio-s3==1.0.7; python_version >= '3.7' +invenio-saml==1.0.1; python_version >= '3.7' +invenio-search[opensearch2]==2.4.1; python_version >= '3.7' +invenio-search-ui==2.8.7; python_version >= '3.7' +invenio-stats==4.3.0; python_version >= '3.7' +invenio-subjects-fast==2023.7.5; python_version >= '3.9' +invenio-theme==3.5.2; python_version >= '3.7' +invenio-userprofiles==3.0.2; python_version >= '3.7' +invenio-users-resources==5.2.1; python_version >= '3.7' +invenio-utilities-tuw==2024.2.1; python_version >= '3.9' +-e ./site/kcworks/dependencies/invenio-vocabularies ; python_version >= '3.7' +invenio-webhooks==1.0.1; python_version >= '3.7' +ipython==8.18.1; python_version >= '3.9' +isbnlib==3.10.14 +iso639==0.1.4 +isodate==0.7.2; python_version >= '3.7' +isort==5.13.2; python_full_version >= '3.8.0' +itsdangerous==2.0.1; python_version >= '3.6' +jedi==0.19.2; python_version >= '3.6' +jinja2==3.1.5; python_version >= '3.7' +jmespath==1.0.1; python_version >= '3.7' +jsmin==3.0.1 +jsonlines==4.0.0; python_version >= '3.8' +jsonpatch==1.33; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6' +jsonpointer==3.0.0; python_version >= '3.7' +jsonref==1.1.0; python_version >= '3.7' +jsonresolver==0.3.2; python_version >= '3.7' +jsonschema==4.23.0; python_version >= '3.8' +jsonschema-specifications==2024.10.1; python_version >= '3.9' +jupyter-client==8.6.3; python_version >= '3.8' +jupyter-core==5.7.2; python_version >= '3.8' +jupyterlab-pygments==0.3.0; python_version >= '3.8' +-e site +kombu==5.4.2; python_version >= '3.8' +langdetect==1.0.9 +lark==1.2.2; python_version >= '3.8' +limits==4.0.1; python_version >= '3.9' +log-symbols==0.0.14 +luqum==0.13.0 +lxml==5.3.0; python_version >= '3.6' +lxml-html-clean==0.4.1 +mako==1.3.8; python_version >= '3.8' +markdown==3.7; python_version >= '3.8' +markupsafe==3.0.2; python_version >= '3.9' +marshmallow==3.25.1; python_version >= '3.9' +marshmallow-oneofschema==3.1.1; python_version >= '3.8' +marshmallow-utils==0.10.0; python_version >= '3.7' +matplotlib-inline==0.1.7; python_version >= '3.8' +maxminddb==2.6.3; python_version >= '3.8' +maxminddb-geolite2==2018.703 +mergedeep==1.3.4; python_version >= '3.6' +mistune==3.1.0; python_version >= '3.8' +mkdocs==1.6.1; python_version >= '3.8' +mkdocs-get-deps==0.2.0; python_version >= '3.8' +mkdocs-jupyter==0.12.0; python_version >= '3.6' +mkdocs-material==8.5.11; python_version >= '3.7' +mkdocs-material-extensions==1.3.1; python_version >= '3.8' +msgpack==1.1.0; python_version >= '3.8' +multidict==6.1.0; python_version >= '3.8' +nameparser==1.1.3 +nbclient==0.10.2; python_full_version >= '3.9.0' +nbconvert==7.16.5; python_version >= '3.8' +nbformat==5.10.4; python_version >= '3.8' +nbstripout==0.6.2; python_version >= '3.6' +numpy==2.0.2; python_version >= '3.9' +oauthlib==2.1.0 +opensearch-dsl==2.1.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +opensearch-py==2.8.0; python_version >= '3.8' and python_version < '4' +ordered-set==4.1.0; python_version >= '3.7' +orderly-set==5.2.3; python_version >= '3.8' +packaging==24.2; python_version >= '3.8' +pandocfilters==1.5.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +parso==0.8.4; python_version >= '3.6' +passlib==1.7.4 +pathspec==0.12.1; python_version >= '3.8' +pexpect==4.9.0; sys_platform != 'win32' +pillow==11.1.0; python_version >= '3.9' +pip==24.3.1; python_version >= '3.8' +pipenv==2024.4.0; python_version >= '3.8' +pipfile==0.0.2 +platformdirs==4.3.6; python_version >= '3.8' +pluggy==0.13.1; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3' +ply==3.11 +prompt-toolkit==3.0.50; python_full_version >= '3.8.0' +propcache==0.2.1; python_version >= '3.9' +psycopg2==2.9.10; python_version >= '3.8' +psycopg2-binary==2.9.10; python_version >= '3.8' +ptyprocess==0.7.0 +pure-eval==0.2.3 +py==1.11.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4' +pycodestyle==2.12.1; python_version >= '3.8' +pycountry==22.3.5; python_version >= '3.6' and python_version < '4' +pycparser==2.22; python_version >= '3.8' +pydantic==2.10.6; python_version >= '3.8' +pydantic-core==2.27.2; python_version >= '3.8' +pydash==6.0.2; python_version >= '3.7' +pydocstyle==6.3.0; python_version >= '3.6' +pygments==2.19.1; python_version >= '3.8' +pyjwt[crypto]==2.10.1; python_version >= '3.9' +pymdown-extensions==10.14; python_version >= '3.8' +pymysql==1.1.1; python_version >= '3.7' +pynpm==0.2.0; python_version >= '3.7' +pyparsing==3.2.1; python_version >= '3.9' +pyproject-hooks==1.2.0; python_version >= '3.7' +pytest==7.1.3; python_version >= '3.7' +pytest-cov==6.0.0; python_version >= '3.9' +pytest-flask==1.3.0; python_version >= '3.7' +pytest-github-actions-annotate-failures==0.3.0; python_version >= '3.8' +pytest-invenio==2.2.1; python_version >= '3.7' +pytest-isort==4.0.0; python_version >= '3.8' and python_version < '4' +pytest-pycodestyle==2.4.1; python_version ~= '3.9' +pytest-pydocstyle==2.4.0; python_version ~= '3.9' +python-dateutil==2.9.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2' +python-dotenv==1.0.1; python_version >= '3.8' +python-geoip==1.2 +python-iso639==2024.10.22; python_version >= '3.8' +python-slugify==8.0.4; python_version >= '3.7' +python-stdnum==1.20 +python3-saml==1.16.0 +pytz==2024.2 +pywebpack==2.1.0; python_version >= '3.7' +pyyaml==6.0.2; python_version >= '3.8' +pyyaml-env-tag==0.1; python_version >= '3.6' +pyzmq==26.2.0; python_version >= '3.7' +redis==5.2.1; python_version >= '3.8' +referencing==0.36.1; python_version >= '3.9' +regex==2024.11.6; python_version >= '3.8' +requests==2.32.3; python_version >= '3.8' +requests-oauthlib==1.1.0 +rich==12.6.0; python_full_version >= '3.6.3' and python_full_version < '4.0.0' +rpds-py==0.22.3; python_version >= '3.9' +s3fs==0.4.2; python_version >= '3.5' +s3transfer==0.11.1; python_version >= '3.8' +selenium==3.141.0 +sentry-sdk==2.20.0; python_version >= '3.6' +setuptools==75.8.0; python_version >= '3.9' +simplejson==3.19.3; python_version >= '2.5' and python_version not in '3.0, 3.1, 3.2' +simplekv==0.14.1 +six==1.17.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2' +snowballstemmer==2.2.0 +soupsieve==2.6; python_version >= '3.8' +speaklater==1.3 +sphinx==7.3.7; python_version >= '3.9' +sphinx-autodoc-typehints==1.25.3; python_version >= '3.8' +sphinxcontrib-applehelp==2.0.0; python_version >= '3.9' +sphinxcontrib-devhelp==2.0.0; python_version >= '3.9' +sphinxcontrib-htmlhelp==2.1.0; python_version >= '3.9' +sphinxcontrib-issuetracker==0.11 +sphinxcontrib-jsmath==1.0.1; python_version >= '3.5' +sphinxcontrib-qthelp==2.0.0; python_version >= '3.9' +sphinxcontrib-serializinghtml==2.0.0; python_version >= '3.9' +spinners==0.0.24 +sqlalchemy[asyncio]==1.4.54; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' +sqlalchemy-continuum==1.4.1 +sqlalchemy-utils==0.38.3; python_version ~= '3.6' +stack-data==0.6.3 +termcolor==2.5.0; python_version >= '3.9' +text-unidecode==1.3 +timefhuman==0.1.1 +tinycss2==1.4.0; python_version >= '3.8' +titlecase==2.4.1; python_version >= '3.7' +toml==0.10.2; python_version >= '2.6' and python_version not in '3.0, 3.1, 3.2' +tomli==2.2.1; python_version >= '3.8' +tornado==6.4.2; python_version >= '3.8' +tqdm==4.67.1; python_version >= '3.7' +traitlets==5.14.3; python_version >= '3.8' +types-beautifulsoup4==4.12.0.20241020; python_version >= '3.8' +types-bleach==6.2.0.20241123; python_version >= '3.8' +types-dateparser==1.2.0.20240420; python_version >= '3.8' +types-html5lib==1.1.11.20241018; python_version >= '3.8' +types-python-dateutil==2.9.0.20241206; python_version >= '3.8' +types-pyyaml==6.0.12.20241230; python_version >= '3.8' +types-requests==2.31.0.6; python_version >= '3.7' +types-urllib3==1.26.25.14 +types-xmltodict==0.13.0.3 +typing-extensions==4.12.2; python_version >= '3.8' +tzdata==2024.2; python_version >= '2' +tzlocal==5.2; python_version >= '3.8' +ua-parser==1.0.0; python_version >= '3.9' +ua-parser-builtins==0.18.0.post1; python_version >= '3.9' +unidecode==1.3.8; python_version >= '3.5' +uritemplate==4.1.1; python_version >= '3.6' +uritools==4.0.3; python_version >= '3.7' +urllib3==1.26.20; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5' +uwsgi==2.0.28 +uwsgi-tools==1.1.1 +uwsgitop==0.12 +validators==0.34.0; python_version >= '3.8' +vine==5.1.0; python_version >= '3.6' +virtualenv==20.29.1; python_version >= '3.8' +wand==0.6.13 +watchdog==2.2.1; python_version >= '3.6' +wcwidth==0.2.13 +webargs==5.5.3 +webencodings==0.5.1 +werkzeug==2.2.3; python_version >= '3.7' +wrapt==1.17.2; python_version >= '3.8' +wtforms==3.1.2; python_version >= '3.8' +wtforms-alchemy==0.18.0 +wtforms-components==0.11.0; python_version >= '3.9' +xmlsec>=1.3.13; python_version >= '3.5' +xmltodict==0.12.0 +yarl==1.18.3; python_version >= '3.9' +zipp==3.21.0; python_version >= '3.9' +zipstream-ng==1.8.0; python_full_version >= '3.5.0' diff --git a/run-js-tests.sh b/run-js-tests.sh new file mode 100644 index 000000000..f4614a0bd --- /dev/null +++ b/run-js-tests.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Run the tests +npm run test \ No newline at end of file diff --git a/site/run_tests.sh b/run-tests.sh similarity index 52% rename from site/run_tests.sh rename to run-tests.sh index 8ff65a044..c22d6464e 100644 --- a/site/run_tests.sh +++ b/run-tests.sh @@ -22,7 +22,7 @@ set -o nounset # Always bring down docker services function cleanup() { - eval "$(pipenv run docker-services-cli down --env)" + eval "$(uv run docker-services-cli down --env)" } # Check for arguments @@ -47,17 +47,39 @@ if [[ ${keep_services} -eq 0 ]]; then trap cleanup EXIT fi -# python -m check_manifest --no-build-isolation -# python -m setup extract_messages --output-file /dev/null -# python -m sphinx.cmd.build -qnN docs docs/_build/html -eval "$(PIPENV_DOTENV_LOCATION=/Users/ianscott/Development/knowledge-commons-works/site/tests/.env pipenv run docker-services-cli up --db ${DB:-postgresql} --cache ${CACHE:-redis} --search opensearch --mq ${MQ:-rabbitmq} --env)" +# Extract and compile translations from python files +echo "Extracting translations from python files" +uv run invenio-cli translations extract +echo "Updating translations" +uv run invenio-cli translations update +echo "Compiling translations" +uv run invenio-cli translations compile + +# Build the documentation +echo "Building the documentation" +uv run sphinx-build -b html docs/source/ docs/build/ + +# Start the services and get their environment variables +echo "Starting the services" +eval "$(uv run --env-file tests/.env docker-services-cli --filepath .venv/lib/python3.12/site-packages/docker_services_cli/docker-services.yml up --db ${DB:-postgresql} --cache ${CACHE:-redis} --search opensearch --mq ${MQ:-rabbitmq} --env)" + +# Unset the environment variables that docker-services-cli set so that the values from tests/.env are used instead of those defaults from docker-services.yml +unset SQLALCHEMY_DATABASE_URI +unset INVENIO_SQLALCHEMY_DATABASE_URI + +# Run mypy +echo "Running mypy on the site directory" +uv run mypy --config-file pyproject.toml site/ + # Note: expansion of pytest_args looks like below to not cause an unbound # variable error when 1) "nounset" and 2) the array is empty. if [ ${#pytest_args[@]} -eq 0 ]; then - PIPENV_DOTENV_LOCATION=/Users/ianscott/Development/knowledge-commons-works/site/tests/.env pipenv run python -m pytest -vv --disable-warnings + echo "Running pytest" + uv run --env-file tests/.env python -m pytest -vv --disable-warnings else - PIPENV_DOTENV_LOCATION=/Users/ianscott/Development/knowledge-commons-works/site/tests/.env pipenv run python -m pytest ${pytest_args[@]} --disable-warnings + echo "Running pytest with additional arguments" + uv run --env-file tests/.env python -m pytest ${pytest_args[@]} --disable-warnings fi -# python -m sphinx.cmd.build -qnN -b doctest docs docs/_build/doctest + tests_exit_code=$? exit "$tests_exit_code" \ No newline at end of file diff --git a/scripts/check_entry_points.py b/scripts/check_entry_points.py new file mode 100644 index 000000000..a059a68c4 --- /dev/null +++ b/scripts/check_entry_points.py @@ -0,0 +1,47 @@ +from importlib_metadata import entry_points, EntryPoint + + +def check_entry_points(): + print("Checking invenio_base.blueprints entry points:") + for ep in entry_points(group="invenio_base.blueprints"): + print(f" - {ep.name}: {ep.value}") + if ep.name in [ + "kcworks_views", + "knowledge_commons_works_menu", + "kcworks_stats_dashboard_view", + ]: + print(f" Module: {ep.module}") + print(f" Attrs: {ep.attr}") + try: + loaded = ep.load() + print(f" Loaded successfully: {loaded}") + except Exception as e: + print(f" Failed to load: {e}") + + print("\nChecking invenio_base.apps entry points:") + for ep in entry_points(group="invenio_base.apps"): + print(f" - {ep.name}: {ep.value}") + if ep.name == "kcworks": + print(f" Module: {ep.module}") + print(f" Attrs: {ep.attr}") + try: + loaded = ep.load() + print(f" Loaded successfully: {loaded}") + except Exception as e: + print(f" Failed to load: {e}") + + print("\nChecking invenio_base.api_blueprints entry points:") + for ep in entry_points(group="invenio_base.api_blueprints"): + print(f" - {ep.name}: {ep.value}") + if ep.name == "kcworks_api": + print(f" Module: {ep.module}") + print(f" Attrs: {ep.attr}") + try: + loaded = ep.load() + print(f" Loaded successfully: {loaded}") + except Exception as e: + print(f" Failed to load: {e}") + + +if __name__ == "__main__": + check_entry_points() diff --git a/scripts/stats-CLI/flask-stats/flaskr-stats/__init__.py b/scripts/stats-CLI/flask-stats/flaskr_stats/__init__.py similarity index 100% rename from scripts/stats-CLI/flask-stats/flaskr-stats/__init__.py rename to scripts/stats-CLI/flask-stats/flaskr_stats/__init__.py diff --git a/scripts/stats-CLI/flask-stats/flaskr-stats/stats.py b/scripts/stats-CLI/flask-stats/flaskr_stats/stats.py similarity index 100% rename from scripts/stats-CLI/flask-stats/flaskr-stats/stats.py rename to scripts/stats-CLI/flask-stats/flaskr_stats/stats.py diff --git a/scripts/stats-CLI/flask-stats/pyproject.toml b/scripts/stats-CLI/flask-stats/pyproject.toml index fcef08549..587245f25 100644 --- a/scripts/stats-CLI/flask-stats/pyproject.toml +++ b/scripts/stats-CLI/flask-stats/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "flaskr-stats" +name = "flaskr_stats" version = "1.0.0" description = "The basic blog app built in the Flask tutorial." readme = "README.rst" @@ -20,7 +20,7 @@ requires = ["flit_core<4"] build-backend = "flit_core.buildapi" [tool.flit.module] -name = "flaskr-stats" +name = "flaskr_stats" [tool.flit.sdist] include = [ diff --git a/site/kcworks/__init__.py b/site/kcworks/__init__.py index 6fd0f86b8..3e5aaa0ac 100644 --- a/site/kcworks/__init__.py +++ b/site/kcworks/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # @@ -18,4 +16,4 @@ """KCWorks customizations to InvenioRDM.""" -__version__ = "0.3.8-beta11" +__version__ = "0.4.0-beta12" diff --git a/site/kcworks/api_helpers.py b/site/kcworks/api_helpers.py index 5c8e603e9..551b98206 100644 --- a/site/kcworks/api_helpers.py +++ b/site/kcworks/api_helpers.py @@ -1,22 +1,37 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Handler classes for invenio-remote-api-provisioner.""" +import os +import re +import time +from pprint import pformat + import arrow +import iso639 from celery import shared_task from flask import current_app from flask_principal import Identity from invenio_access.permissions import system_identity from invenio_accounts.proxies import current_accounts -from invenio_communities.proxies import current_communities from invenio_communities.errors import CommunityDeletedError +from invenio_communities.proxies import current_communities from invenio_pidstore.errors import PIDDoesNotExistError from invenio_rdm_records.proxies import current_rdm_records -from invenio_rdm_records.services.errors import ( - RecordDeletedException, -) +from invenio_rdm_records.services.errors import RecordDeletedException from invenio_remote_api_provisioner.utils import get_user_idp_info -import iso639 -import os -from pprint import pformat -import re -import time from .utils import ( get_commons_user_from_contributor, @@ -28,10 +43,11 @@ def get_user_profile_info(user_id: int = 0, email: str = "") -> dict: """Get the user's profile information. - params: - user_id: The user's InvenioRDM id. + Parameters: + user_id (int): The user's InvenioRDM id. + email (str): The user's email address. - returns: + Returns: A dict containing the user's profile information with the keys "name", "email", "affiliation", and "orcid". Or an empty dict if the user has no profile information. @@ -59,13 +75,18 @@ def get_user_profile_info(user_id: int = 0, email: str = "") -> dict: def format_commons_search_payload( identity: Identity, - record: dict = {}, - owner: dict = {}, - data: dict = {}, - draft: dict = {}, + record: dict | None = None, + owner: dict | None = None, + data: dict | None = None, + draft: dict | None = None, **kwargs, ) -> dict: """Format payload for external service.""" + record = record if record else {} + owner = owner if owner else {} + draft = draft if draft else {} + data = data if data else draft + UI_URL_BASE = os.environ.get("INVENIO_SITE_UI_URL", "") if not UI_URL_BASE: UI_URL_BASE = current_app.config.get( @@ -80,9 +101,6 @@ def format_commons_search_payload( "KC_PROFILES_URL_BASE", "http://hcommons.org/profiles" ) - if not data: - data = draft - payload = { "_internal_id": record["id"], "content_type": "work", @@ -174,28 +192,27 @@ def format_commons_search_payload( def format_commons_search_collection_payload( identity: Identity, - record: dict = {}, - owner: dict = {}, - data: dict = {}, - draft: dict = {}, + record: dict | None = None, + owner: dict | None = None, + data: dict | None = None, + draft: dict | None = None, **kwargs, ) -> dict: - """Format payload for external service.""" - # FIXME: Handle multiple owners??? - current_app.logger.debug("owner") - current_app.logger.debug(owner) + """Format payload for a collection to be sent to Commons Central Search.""" + record = record if record else {} + owner = owner if owner else {} + draft = draft if draft else {} + data = data if data else draft + # FIXME: Handle multiple owners??? UI_URL_BASE = os.environ.get("INVENIO_SITE_UI_URL", "http://works.kcommons.org") - API_URL_BASE = os.environ.get( - "INVENIO_SITE_API_URL", "http://works.kcommons.org/api" - ) + # API_URL_BASE = os.environ.get( + # "INVENIO_SITE_API_URL", "http://works.kcommons.org/api" + # ) PROFILES_URL_BASE = current_app.config.get( "KC_PROFILES_URL_BASE", "http://hcommons.org/profiles" ) - if not data: - data = draft - try: type_string = "works-collection" # FIXME: Do we add the collection type to the type string? @@ -268,23 +285,29 @@ def record_commons_search_recid( service_type: str = "", service_method: str = "", request_url: str = "", - payload_object: dict = {}, - record: dict = {}, - draft: dict = {}, + payload_object: dict | None = None, + record: dict | None = None, + draft: dict | None = None, **kwargs, ) -> None: - """Record the _id of the commons search record.""" + """Record the _id of the commons search record. + + This is a callback function that is called when a record is sent to + or updated on the Commons Central Search. We record the _id of the + commons search record in the KCWorks record's custom field + `kcr:commons_search_recid``. We also record the timestamp of the update + in the custom field `kcr:commons_search_updated``. This allows us to + - know whether a record has been sent to Commons Central Search + already, and if so when + - know which record to update on Commons Central Search when the KCWorks + record is updated again + """ + draft = draft if draft else {} + record = record if record else draft + payload_object = payload_object if payload_object else {} + record_changes = False service = current_rdm_records.records_service - current_app.logger.debug( - "Callback fired to record search recid for " - f"record {record.get('id')}, draft {draft.get('id')}" - ) - current_app.logger.debug(f"json in callback: {response_json}") - current_app.logger.debug("payload in callback:") - current_app.logger.debug(pformat(payload_object)) - - record = record if record else draft editing_draft = service.edit(system_identity, id_=draft["id"]) new_metadata = editing_draft.to_dict() @@ -312,15 +335,14 @@ def record_commons_search_recid( try: del new_metadata["revision_id"] - updated = service.update_draft( + service.update_draft( system_identity, new_metadata["id"], data=new_metadata, ) - - new_draft = service.read_draft(system_identity, draft["id"]).to_dict() - - published = service.publish(system_identity, draft["id"]) + # FIXME: This is a hack to get the draft to update + service.read_draft(system_identity, draft["id"]).to_dict() + service.publish(system_identity, draft["id"]) except RecordDeletedException as e: current_app.logger.error( @@ -349,32 +371,24 @@ def record_commons_search_collection_recid( service_type: str = "", service_method: str = "", request_url: str = "", - payload_object: dict = {}, + payload_object: dict | None = None, record_id: str = "", draft_id: str = "", **kwargs, ) -> None: """Record the _id of the commons search record.""" + payload_object = payload_object if payload_object else {} service = current_communities.service - current_app.logger.debug( - "Callback fired to record search collection recid for " - f"record {record_id}, draft {draft_id}" - ) - current_app.logger.debug(f"json in callback: {response_json}") - current_app.logger.debug(f"payload in callback: {payload_object}") if response_json.get("_id"): # No id is returned for updates try: - time.sleep(5) - current_app.logger.debug(f"Record ID: {record_id}, draft ID: {draft_id}") + time.sleep(5) # FIXME: Remove this try: record_data = service.read(system_identity, record_id).to_dict() except PIDDoesNotExistError: records = service.search( system_identity, q=f"slug:{payload_object['_internal_id']}" ).to_dict() - current_app.logger.debug("records search") - current_app.logger.debug(pformat(records)) record_data = records["hits"]["hits"][0] service.update( @@ -399,24 +413,31 @@ def record_commons_search_collection_recid( def choose_record_publish_method( - identity: Identity, record: dict = {}, draft: dict = {}, **kwargs + identity: Identity, + record: dict | None = None, + draft: dict | None = None, + **kwargs, ) -> str: """Choose the correct http method for publish RDMRecordService events.""" http_method = "POST" - if record["is_published"] and record.get("custom_fields", {}).get( - "kcr:commons_search_recid" + if ( + record + and record.get("is_published") + and record.get("custom_fields", {}).get("kcr:commons_search_recid") ): http_method = "PUT" - if draft.get("access", {}).get("record") != "public": + if draft and draft.get("access", {}).get("record") != "public": http_method = "DELETE" return http_method def record_publish_url_factory( - identity: Identity, record: dict = {}, draft: dict = {}, **kwargs + identity: Identity, + record: dict | None = None, + draft: dict | None = None, + **kwargs, ) -> str: """Create the correct url for publish RDMRecordService events.""" - protocol = current_app.config.get("COMMONS_API_REQUEST_PROTOCOL", "http") domain = current_app.config.get("KC_WORDPRESS_DOMAIN", "hcommons.org") @@ -424,13 +445,16 @@ def record_publish_url_factory( # removal of records from the commons search index when they are # no longer publicly visible if ( - record.get("is_published") + record + and record.get("is_published") and record.get("custom_fields", {}).get("kcr:commons_search_recid") - or draft.get("access", {}).get("record") != "public" + or draft + and record + and draft.get("access", {}).get("record") != "public" ): url = ( f"{protocol}://search.{domain}/v1/documents/" - f"{record['custom_fields']['kcr:commons_search_recid']}" + f"{record.get('custom_fields', {}).get('kcr:commons_search_recid')}" ) else: url = f"{protocol}://search.{domain}/v1/documents" diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesCarousel/CarouselItem.js b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesCarousel/CarouselItem.js index c70c576c9..b8f9c4f61 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesCarousel/CarouselItem.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesCarousel/CarouselItem.js @@ -6,7 +6,7 @@ * under the terms of the MIT License; see LICENSE file for more details. */ -import { i18next } from "@translations/invenio_communities/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import _truncate from "lodash/truncate"; import PropTypes from "prop-types"; import React, { Component } from "react"; diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesCarousel/CommunitiesCarousel.js b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesCarousel/CommunitiesCarousel.js index fea9b66d4..326c3305f 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesCarousel/CommunitiesCarousel.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesCarousel/CommunitiesCarousel.js @@ -6,7 +6,7 @@ * under the terms of the MIT License; see LICENSE file for more details. */ -import { i18next } from "@translations/invenio_communities/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import _isEmpty from "lodash/isEmpty"; import PropTypes from "prop-types"; import React, { Component } from "react"; diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityCompactItem.js b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityCompactItem.js index 78e56fab3..b993f2120 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityCompactItem.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityCompactItem.js @@ -3,8 +3,75 @@ import PropTypes from "prop-types"; import { CommunityCompactItemComputer } from "./CommunityCompactItemComputer"; import { CommunityCompactItemMobile } from "./CommunityCompactItemMobile"; +import { Trans } from "react-i18next"; +import { i18next } from "@translations/i18next"; +import { readableFieldLabels } from "@js/invenio_modular_deposit_form/readableFieldLabels"; -export function CommunityCompactItem({ +/** + * Find the fields with editing restrictions for a community + * + * exclude the restriction of the default community + * + * transform field paths to readable field labels if possible + * + * @param {Object} permissionsPerField - The permissions per field + * @param {Object} currentCommunity - The current community + * @returns {Array} The restricted fields + */ +function findRestrictedFields(permissionsPerField, currentCommunity) { + const communityRestrictions = permissionsPerField?.[currentCommunity?.slug]?.policy; + let allRestrictedFields = []; + if (communityRestrictions) { + allRestrictedFields = Array.isArray(communityRestrictions) + ? communityRestrictions + : Object.keys(communityRestrictions); + } + const restrictedFields = allRestrictedFields + .filter( + (field) => !field.replace("|", ".").startsWith("parent.communities.default") + ) + .map((field) => readableFieldLabels[field] || field); + const removalRestricted = allRestrictedFields.some((field) => + field.replace("|", ".").startsWith("parent.communities.default") + ); + + return [restrictedFields, removalRestricted]; +} + +function getRestrictionsMessage(removalRestricted, editingRestrictions) { + return editingRestrictions.length > 0 ? ( + !removalRestricted ? ( + , + }} + /> + ) : ( + , + }} + /> + ) + ) : removalRestricted ? ( + i18next.t( + "This collection restricts the removal of included works or changing their primary collection." + ) + ) : null; +} + + +const CommunityCompactItem = ({ result, actions, extraLabels, @@ -12,7 +79,17 @@ export function CommunityCompactItem({ showPermissionLabel, detailUrl, isCommunityDefault, -}) { + permissionsPerField, +}) => { + + const [editingRestrictions, removalRestricted] = findRestrictedFields( + permissionsPerField, + result + ); + const restrictionsMessage = getRestrictionsMessage( + removalRestricted, + editingRestrictions + ); return ( <> ); @@ -45,6 +124,10 @@ CommunityCompactItem.propTypes = { showPermissionLabel: PropTypes.bool, detailUrl: PropTypes.string, isCommunityDefault: PropTypes.bool.isRequired, + restrictionsMessage: PropTypes.string, + permissionsPerField: PropTypes.object, + removalRestricted: PropTypes.bool, + editingRestrictions: PropTypes.array, }; CommunityCompactItem.defaultProps = { @@ -53,4 +136,11 @@ CommunityCompactItem.defaultProps = { itemClassName: "", showPermissionLabel: false, detailUrl: undefined, + isCommunityDefault: false, + restrictionsMessage: undefined, + permissionsPerField: undefined, + removalRestricted: false, + editingRestrictions: [], }; + +export { CommunityCompactItem }; diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityCompactItemComputer.js b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityCompactItemComputer.js index 9cdc5ed4c..0be7371d6 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityCompactItemComputer.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityCompactItemComputer.js @@ -4,14 +4,15 @@ // InvenioRDM is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import React from "react"; import PropTypes from "prop-types"; import _truncate from "lodash/truncate"; import { Image, InvenioPopup } from "react-invenio-forms"; -import { Icon, Label, Item } from "semantic-ui-react"; +import { Icon, Label, Item, Popup } from "semantic-ui-react"; import { CommunityTypeLabel, RestrictedLabel } from "../labels"; +// or from "@js/invenio_communities/community/labels"; import GeoPattern from "geopattern"; export const CommunityCompactItemComputer = ({ @@ -22,11 +23,14 @@ export const CommunityCompactItemComputer = ({ showPermissionLabel, detailUrl, isCommunityDefault, + restrictionsMessage, }) => { - const { metadata, ui, links, access, id } = result; + const { metadata, ui, links, access, id, slug } = result; const communityType = ui?.type?.title_l10n; - const pattern = GeoPattern.generate(encodeURI(result.slug)); + const makePattern = (slug) => { + return GeoPattern.generate(encodeURI(slug)).toDataUri(); + }; return ( { + e.target.onerror = null; + e.target.src = makePattern(slug); + }} />

    @@ -111,6 +130,7 @@ CommunityCompactItemComputer.propTypes = { showPermissionLabel: PropTypes.bool, detailUrl: PropTypes.string, isCommunityDefault: PropTypes.bool.isRequired, + restrictionsMessage: PropTypes.string, }; CommunityCompactItemComputer.defaultProps = { @@ -119,4 +139,6 @@ CommunityCompactItemComputer.defaultProps = { itemClassName: "", showPermissionLabel: false, detailUrl: undefined, + isCommunityDefault: false, + restrictionsMessage: undefined, }; diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityCompactItemMobile.js b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityCompactItemMobile.js index 19153ace5..a9d957e20 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityCompactItemMobile.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityCompactItemMobile.js @@ -1,20 +1,25 @@ -// This file is part of InvenioRDM -// Copyright (C) 2022 CERN. +// This file is part of Knowledge Commons Works +// Copyright (C) 2024-2025 Mesh Research // -// Invenio App RDM is free software; you can redistribute it and/or modify it -// under the terms of the MIT License; see LICENSE file for more details. +// Knowledge Commons Works is based on InvenioRDM, and +// this file is based on code from InvenioRDM. InvenioRDM is +// Copyright (C) 2022-2024 CERN. +// +// Knowledge Commons Works and InvenioRDM are both free software; +// you can redistribute and/or modify them under the terms of the +// MIT License; see LICENSE file for more details. -import { i18next } from "@translations/invenio_app_rdm/i18next"; -import { CommunityTypeLabel } from "../labels"; -import { RestrictedLabel } from "../labels"; +import { i18next } from "@translations/kcworks/i18next"; +import { CommunityTypeLabel, RestrictedLabel } from "../labels"; +// or from "@js/invenio_communities/community/labels"; import _truncate from "lodash/truncate"; import React from "react"; import { Image, InvenioPopup } from "react-invenio-forms"; -import { Icon, Label } from "semantic-ui-react"; +import { Icon, Label, Popup } from "semantic-ui-react"; import PropTypes from "prop-types"; import GeoPattern from "geopattern"; -export const CommunityCompactItemMobile = ({ +const CommunityCompactItemMobile = ({ result, actions, extraLabels, @@ -22,11 +27,14 @@ export const CommunityCompactItemMobile = ({ showPermissionLabel, detailUrl, isCommunityDefault, + restrictionsMessage, }) => { const communityType = result.ui?.type?.title_l10n; - const { metadata, ui, links, access, id } = result; + const { metadata, ui, links, access, id, slug } = result; - const pattern = GeoPattern.generate(encodeURI(result.slug)); + const makePattern = (slug) => { + return GeoPattern.generate(encodeURI(slug)).toDataUri(); + }; return (
    @@ -36,9 +44,13 @@ export const CommunityCompactItemMobile = ({ wrapped size="mini" src={links.logo} - alt="" + alt={i18next.t("Community logo")} className="community-image rel-mr-1" - fallbackSrc={pattern.toDataUri()} + fallbackSrc={makePattern(slug)} + onError={(e) => { + e.target.onerror = null; + e.target.src = makePattern(slug); + }} />
    @@ -94,10 +106,21 @@ export const CommunityCompactItemMobile = ({ )} {isCommunityDefault && ( )} + {restrictionsMessage && ( + + + {i18next.t("Editing restrictions")} + + } + /> + )}
    @@ -112,6 +135,7 @@ CommunityCompactItemMobile.propTypes = { actions: PropTypes.node, detailUrl: PropTypes.string, isCommunityDefault: PropTypes.bool.isRequired, + restrictionsMessage: PropTypes.string, }; CommunityCompactItemMobile.defaultProps = { @@ -120,4 +144,7 @@ CommunityCompactItemMobile.defaultProps = { itemClassName: "", showPermissionLabel: false, detailUrl: undefined, + restrictionsMessage: undefined, }; + +export { CommunityCompactItemMobile }; diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityItemComputer.js b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityItemComputer.js index 1ecf2d12d..bddf11c9d 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityItemComputer.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityItemComputer.js @@ -7,7 +7,7 @@ // InvenioRDM is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import { CommunityTypeLabel } from "../labels"; import { RestrictedLabel } from "../labels"; import React from "react"; diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityItemMobile.js b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityItemMobile.js index c006c986d..5a55ed7dd 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityItemMobile.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/communitiesItems/CommunityItemMobile.js @@ -4,7 +4,7 @@ // Invenio App RDM is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import { CommunityTypeLabel } from "../labels"; import { RestrictedLabel } from "../labels"; import React from "react"; diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/featuredCommunities/FeaturedCommunities.js b/site/kcworks/assets/semantic-ui/js/collections/community/featuredCommunities/FeaturedCommunities.js index 06fcce8f2..aaeb0603e 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/featuredCommunities/FeaturedCommunities.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/featuredCommunities/FeaturedCommunities.js @@ -4,7 +4,7 @@ import { http } from "react-invenio-forms"; import { Grid, Message, Container, Loader } from "semantic-ui-react"; import FeaturedCommunity from "./FeaturedCommunity"; import PropTypes from "prop-types"; -import { i18next } from "@translations/invenio_communities/i18next"; +import { i18next } from "@translations/kcworks/i18next"; export default class FeaturedCommunities extends Component { constructor(props) { diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/header.js b/site/kcworks/assets/semantic-ui/js/collections/community/header.js index 2cf490d4f..e87d5d2bf 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/header.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/header.js @@ -13,7 +13,7 @@ import React from "react"; import ReactDOM from "react-dom"; -import { i18next } from "@translations/invenio_rdm_records/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import { Image } from "react-invenio-forms"; import { AccessStatusLabel } from "./labels/AccessStatusLabel"; import Geopattern from "geopattern"; diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/labels/RestrictedLabel.js b/site/kcworks/assets/semantic-ui/js/collections/community/labels/RestrictedLabel.js index 74b235aca..ccf810e01 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/labels/RestrictedLabel.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/labels/RestrictedLabel.js @@ -4,7 +4,7 @@ // InvenioRDM is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import React from "react"; import PropTypes from "prop-types"; diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/new.js b/site/kcworks/assets/semantic-ui/js/collections/community/new.js index e5177ca7c..be174bc13 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/new.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/new.js @@ -7,7 +7,7 @@ * under the terms of the MIT License; see LICENSE file for more details. */ -import { i18next } from "@translations/invenio_communities/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import { Formik, useFormikContext } from "formik"; import _isEmpty from "lodash/isEmpty"; import _get from "lodash/get"; diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/searchComponents/CommunitiesEmptySearchResults.js b/site/kcworks/assets/semantic-ui/js/collections/community/searchComponents/CommunitiesEmptySearchResults.js index 00047f51a..349955e22 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/searchComponents/CommunitiesEmptySearchResults.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/searchComponents/CommunitiesEmptySearchResults.js @@ -1,6 +1,6 @@ import React from "react"; import PropTypes from "prop-types"; -import { i18next } from "@translations/invenio_communities/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import { Button, Segment, Header, Icon } from "semantic-ui-react"; export const CommunitiesEmptySearchResults = (props) => { diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/searchComponents/CommunitiesSearchBarElement.js b/site/kcworks/assets/semantic-ui/js/collections/community/searchComponents/CommunitiesSearchBarElement.js index b964cc2ce..c9a3f0fd6 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/searchComponents/CommunitiesSearchBarElement.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/searchComponents/CommunitiesSearchBarElement.js @@ -1,4 +1,4 @@ -import { i18next } from "@translations/invenio_communities/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import React from "react"; import { withState } from "react-searchkit"; import { Input } from "semantic-ui-react"; diff --git a/site/kcworks/assets/semantic-ui/js/collections/community/searchComponents/CommunitiesSearchLayout.js b/site/kcworks/assets/semantic-ui/js/collections/community/searchComponents/CommunitiesSearchLayout.js index 83c3b9087..a1de69f97 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/community/searchComponents/CommunitiesSearchLayout.js +++ b/site/kcworks/assets/semantic-ui/js/collections/community/searchComponents/CommunitiesSearchLayout.js @@ -2,7 +2,7 @@ import { SearchAppFacets, SearchAppResultsPane, } from "@js/invenio_search_ui/components"; -import { i18next } from "@translations/invenio_communities/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import PropTypes from "prop-types"; import React from "react"; import { GridResponsiveSidebarColumn } from "react-invenio-forms"; diff --git a/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSearchAppLayout.js b/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSearchAppLayout.js index e01c6ecc1..7f53b7164 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSearchAppLayout.js +++ b/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSearchAppLayout.js @@ -3,7 +3,7 @@ import { SearchAppResultsPane, SearchBar, } from "@js/invenio_search_ui/components"; -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import React, { useContext } from "react"; import { Count, Sort, buildUID } from "react-searchkit"; import { Button, Container, Grid } from "semantic-ui-react"; @@ -45,13 +45,23 @@ export const CommunityRecordsSearchAppLayout = ({ config, appName }) => { )} /> - + ( - - {cmp}  works found - - )} + label={(cmp) => { + console.log("cmp", cmp.props.totalResults); + return( + , + notmobile: + }} + defaults="{{count}}  works found" + /> + ) + }} /> diff --git a/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSearchBarElement.js b/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSearchBarElement.js index daca689a1..d0df7cdd5 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSearchBarElement.js +++ b/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSearchBarElement.js @@ -5,7 +5,7 @@ // terms of the MIT License; see LICENSE file for more details. import { MultipleOptionsSearchBarRSK } from "@js/invenio_search_ui/components"; -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import _isEmpty from "lodash/isEmpty"; import React from "react"; import PropTypes from "prop-types"; diff --git a/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSearchEmptyResults.js b/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSearchEmptyResults.js index 7d7469c99..4d4a89e3e 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSearchEmptyResults.js +++ b/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSearchEmptyResults.js @@ -1,7 +1,7 @@ import React from "react"; import { PropTypes } from "prop-types"; import { Grid, Header } from "semantic-ui-react"; -import { i18next } from "@translations/invenio_communities/i18next"; +import { i18next } from "@translations/kcworks/i18next"; const CommunityRecordsSearchEmptyResults = ({ queryString, searchPath, resetQuery }) => { return ( diff --git a/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSingleSearchBarElement.js b/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSingleSearchBarElement.js index 1d0675fbb..1918c4ca5 100644 --- a/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSingleSearchBarElement.js +++ b/site/kcworks/assets/semantic-ui/js/collections/communityRecordsSearch/CommunityRecordsSingleSearchBarElement.js @@ -4,7 +4,7 @@ // Invenio is free software; you can redistribute it and/or modify it under the // terms of the MIT License; see LICENSE file for more details. -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import React from "react"; import { withState } from "react-searchkit"; import { Input } from "semantic-ui-react"; diff --git a/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/components/CompactStats.js b/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/components/CompactStats.js index 9e514f0e0..6501141c7 100644 --- a/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/components/CompactStats.js +++ b/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/components/CompactStats.js @@ -4,7 +4,7 @@ // Invenio App RDM is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import PropTypes from "prop-types"; import React from "react"; import { Icon, Label, Popup } from "semantic-ui-react"; diff --git a/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/components/CopyButton.js b/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/components/CopyButton.js index cb1b90f35..440964527 100644 --- a/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/components/CopyButton.js +++ b/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/components/CopyButton.js @@ -8,7 +8,7 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; import { Button, Popup } from "semantic-ui-react"; import { CopyToClipboard } from "react-copy-to-clipboard"; -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; class SimpleCopyButton extends React.Component { render() { diff --git a/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/components/RecordsResultsListItem.js b/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/components/RecordsResultsListItem.js index 7c3a10b7e..2283a96ce 100644 --- a/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/components/RecordsResultsListItem.js +++ b/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/components/RecordsResultsListItem.js @@ -4,7 +4,7 @@ // Invenio RDM is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import _get from "lodash/get"; import _truncate from "lodash/truncate"; import React, { Component } from "react"; diff --git a/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/search/components.js b/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/search/components.js index 5205e4f72..22fbbf4f6 100644 --- a/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/search/components.js +++ b/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/search/components.js @@ -11,7 +11,7 @@ import { SearchBar, MultipleOptionsSearchBarRSK, } from "@js/invenio_search_ui/components"; -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import _get from "lodash/get"; import _truncate from "lodash/truncate"; import React from "react"; diff --git a/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/user_dashboard/base.js b/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/user_dashboard/base.js index 55dd2d9a8..d5e0faed6 100644 --- a/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/user_dashboard/base.js +++ b/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/user_dashboard/base.js @@ -12,7 +12,7 @@ import { SearchAppResultsPane, InvenioSearchPagination, } from "@js/invenio_search_ui/components"; -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import React from "react"; import { ResultsList, SearchBar, Sort, buildUID } from "react-searchkit"; import { GridResponsiveSidebarColumn } from "react-invenio-forms"; diff --git a/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/user_dashboard/communities.js b/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/user_dashboard/communities.js index efb3fb437..ed7faef98 100644 --- a/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/user_dashboard/communities.js +++ b/site/kcworks/assets/semantic-ui/js/invenio_app_rdm_custom/user_dashboard/communities.js @@ -8,7 +8,7 @@ // under the terms of the MIT License; see LICENSE file for more details. import { createSearchAppInit } from "@js/invenio_search_ui"; -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import { ResultsGridItemTemplate, CommunitiesEmptySearchResults, diff --git a/site/kcworks/assets/semantic-ui/js/invenio_modular_deposit_form_extras/components/ChapterLabelComponent.jsx b/site/kcworks/assets/semantic-ui/js/invenio_modular_deposit_form_extras/components/ChapterLabelComponent.jsx index 66c865bfd..f54792381 100644 --- a/site/kcworks/assets/semantic-ui/js/invenio_modular_deposit_form_extras/components/ChapterLabelComponent.jsx +++ b/site/kcworks/assets/semantic-ui/js/invenio_modular_deposit_form_extras/components/ChapterLabelComponent.jsx @@ -1,5 +1,5 @@ import React from "react"; -import { i18next } from "@translations/invenio_app_rdm/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import { CustomFieldInjector } from "@js/invenio_modular_deposit_form/field_components/CustomFieldInjector"; const ChapterLabelComponent = ({ ...extraProps }) => { diff --git a/site/kcworks/assets/semantic-ui/js/invenio_modular_deposit_form_extras/validator.js b/site/kcworks/assets/semantic-ui/js/invenio_modular_deposit_form_extras/validator.js index 246b16886..612cb2827 100644 --- a/site/kcworks/assets/semantic-ui/js/invenio_modular_deposit_form_extras/validator.js +++ b/site/kcworks/assets/semantic-ui/js/invenio_modular_deposit_form_extras/validator.js @@ -195,8 +195,8 @@ const validationSchema = yupObject().shape({ }) ), publisher: yupString(), - // .matches(/(?!\s).+/, "Publisher cannot be blank") - // .required("A publisher is required. Enter 'none' if not applicable"), + // Publisher is not required in form validation because a default value is set + // in the form before submission. publication_date: yupString() .dateInSequence() .required("A publication date is required"), @@ -220,15 +220,4 @@ const validationSchema = yupObject().shape({ .required("Some metadata is required"), }); -// const validator = (values) => { -// const errors = {}; -// if (!values.metadata.resource_type) { -// errors.metadata = { resource_type: "Required", ...errors.metadata }; -// } -// if (!values.metadata.title || values.metadata.title === "") { -// errors.metadata = { title: "Required", ...errors.metadata }; -// } -// return errors; -// }; - -export { validationSchema }; +export { validationSchema}; diff --git a/site/kcworks/assets/semantic-ui/js/main_ui/main_menu.js b/site/kcworks/assets/semantic-ui/js/main_ui/main_menu.js index 30745964a..36a6f5c8d 100644 --- a/site/kcworks/assets/semantic-ui/js/main_ui/main_menu.js +++ b/site/kcworks/assets/semantic-ui/js/main_ui/main_menu.js @@ -1,6 +1,6 @@ import React, { useEffect, useState } from "react"; import ReactDOM from "react-dom"; -import { i18next } from "@translations/invenio_rdm_records/i18next"; +import { i18next } from "@translations/kcworks/i18next"; import { Button, Label, Popup } from "semantic-ui-react"; import PropTypes from "prop-types"; @@ -8,7 +8,7 @@ const MenuItem = ({ text, icon, url, tabIndex }) => { return (
    - {i18next.t(text)} + {text} ); }; @@ -17,9 +17,9 @@ const IconMenuItem = ({ text, icon, url, badge, tabIndex }) => { return ( <> + {badge !== undefined && ( + - {i18next.t(text)} + {text} ); @@ -42,7 +42,7 @@ const CollapsingMenuItem = ({ text, icon, url, tabIndex }) => { return ( <> @@ -52,12 +52,12 @@ const CollapsingMenuItem = ({ text, icon, url, tabIndex }) => { - {i18next.t(text)} + {text} - {i18next.t(text)} + {text} ); @@ -299,7 +299,7 @@ const LoginMenu = ({ className="widescreen only" /> */} { const siteNameOverride = "Works"; return themeLogoURL !== "" ? ( - + {i18next.t(siteNameOverride {/*

    @@ -332,7 +332,7 @@ const Brand = ({ themeLogoURL, themeSitename }) => { ) : ( - {i18next.t(themeSitename)} + {themeSitename} ); }; @@ -444,7 +444,7 @@ const MainMenu = ({ )} */}
    - +
    {/* "Main" menu, including collections */} @@ -461,7 +461,7 @@ const MainMenu = ({ (
    0 ? unreadNotifications?.length : undefined} @@ -543,7 +543,7 @@ const MainMenu = ({ {!!accountsEnabled && !!userAuthenticated && (
    - +
    )}
    diff --git a/site/kcworks/assets/semantic-ui/translations/kcworks/i18next-scanner.config.js b/site/kcworks/assets/semantic-ui/translations/kcworks/i18next-scanner.config.js new file mode 100644 index 000000000..d15379856 --- /dev/null +++ b/site/kcworks/assets/semantic-ui/translations/kcworks/i18next-scanner.config.js @@ -0,0 +1,42 @@ +module.exports = { + input: [ + '../../js/**/*.{js,jsx}', + // Ignore node_modules and test files + '!**/node_modules/**', + '!**/test/**', + '!**/tests/**', + '!**/__tests__/**', + '!**/__mocks__/**', + ], + output: './', + options: { + debug: true, + func: { + list: ['i18next.t', 'i18n.t', 't'], + extensions: ['.js', '.jsx'], + }, + trans: { + component: 'Trans', + i18nKey: 'i18nKey', + defaultsKey: 'defaults', + extensions: ['.js', '.jsx'], + fallbackKey: function(ns, value) { + return value; + }, + }, + lngs: ['en'], + ns: ['translation'], + defaultLng: 'en', + defaultNs: 'translation', + defaultValue: function(lng, ns, key) { + return key; + }, + resource: { + loadPath: 'messages/{{lng}}/translations.json', + savePath: 'messages/{{lng}}/translations.json', + jsonIndent: 2, + }, + nsSeparator: false, + keySeparator: false, + }, +}; \ No newline at end of file diff --git a/site/kcworks/assets/semantic-ui/translations/kcworks/i18next.js b/site/kcworks/assets/semantic-ui/translations/kcworks/i18next.js new file mode 100644 index 000000000..7ab29eacb --- /dev/null +++ b/site/kcworks/assets/semantic-ui/translations/kcworks/i18next.js @@ -0,0 +1,37 @@ +// This file is part of React-Invenio-Deposit +// Copyright (C) 2021-2022 Graz University of Technology. +// +// Invenio-communities is free software; you can redistribute it and/or modify it +// under the terms of the MIT License; see LICENSE file for more details. + +import i18n from "i18next"; + +import LanguageDetector from "i18next-browser-languagedetector"; +import { translations } from "./messages"; +import { initReactI18next } from "react-i18next"; + +const options = { + fallbackLng: "en", // fallback keys + returnEmptyString: false, + debug: process.env.NODE_ENV === "development", + resources: translations, + keySeparator: false, + nsSeparator: false, + // specify language detection order + detection: { + order: ["htmlTag"], + // cache user language off + caches: [], + }, + react: { + // Set empty - to allow html tags convert to trans tags + // HTML TAG | Trans TAG + // | <1> + transKeepBasicHtmlNodesFor: [], + }, +}; + +const i18next = i18n.createInstance(); +i18next.use(LanguageDetector).use(initReactI18next).init(options); + +export { i18next }; diff --git a/site/kcworks/assets/semantic-ui/translations/kcworks/messages/en/messages.po b/site/kcworks/assets/semantic-ui/translations/kcworks/messages/en/messages.po new file mode 100644 index 000000000..5ce0ec722 --- /dev/null +++ b/site/kcworks/assets/semantic-ui/translations/kcworks/messages/en/messages.po @@ -0,0 +1,218 @@ +msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"\n" + +msgid "Browse" +msgstr "Browse" + +msgid "Contribute" +msgstr "Contribute" + +msgid "Previous slide" +msgstr "Previous slide" + +msgid "Next slide" +msgstr "Next slide" + +msgid "opens in new tab" +msgstr "opens in new tab" + +msgid "Branding" +msgstr "Branding" + +msgid "Submission information" +msgstr "Submission information" + +msgid "Submission to this community does not require review, and will be published immediately." +msgstr "Submission to this community does not require review, and will be published immediately." + +msgid "profile" +msgstr "profile" + +msgid "Edit" +msgstr "Edit" + +msgid "An error occurred." +msgstr "An error occurred." + +msgid "Contribute a work" +msgstr "Contribute a work" + +msgid "Manage collection" +msgstr "Manage collection" + +msgid "Collection visibility" +msgstr "Collection visibility" + +msgid "The collection is restricted to users with access." +msgstr "The collection is restricted to users with access." + +msgid "Restricted" +msgstr "Restricted" + +msgid "This is your collection's unique identifier, used as the last part of the collection URL. You will be able to access your collection at: " +msgstr "This is your collection's unique identifier, used as the last part of the collection URL. You will be able to access your collection at: " + +msgid "URL Identifier" +msgstr "URL Identifier" + +msgid "Your collection is publicly accessible and shows up in search results." +msgstr "Your collection is publicly accessible and shows up in search results." + +msgid "Your collection is only accessible to users with access." +msgstr "Your collection is only accessible to users with access." + +msgid "Start your new collection" +msgstr "Start your new collection" + +msgid "Collection name" +msgstr "Collection name" + +msgid "Create collection" +msgstr "Create collection" + +msgid "No collections found!" +msgstr "No collections found!" + +msgid "Reset search" +msgstr "Reset search" + +msgid "Search" +msgstr "Search" + +msgid "Search collections..." +msgstr "Search collections..." + +msgid "Filter results" +msgstr "Filter results" + +msgid "Sort by" +msgstr "Sort by" + +msgid "Search filters" +msgstr "Search filters" + +msgid "Search records in collection..." +msgstr "Search records in collection..." + +msgid " <2> works found" +msgstr " <2> works found" + +msgid " <2> works found_plural" +msgstr " <2> works found" + +msgid "Search records..." +msgstr "Search records..." + +msgid "Search collection works..." +msgstr "Search collection works..." + +msgid "This collection does not yet include any works you can view" +msgstr "This collection does not yet include any works you can view" + +msgid "Start over" +msgstr "Start over" + +msgid "ProTip" +msgstr "ProTip" + +msgid "Search guide" +msgstr "Search guide" + +msgid "Views" +msgstr "Views" + +msgid "Downloads" +msgstr "Downloads" + +msgid "Copy to clipboard" +msgstr "Copy to clipboard" + +msgid "Copied!" +msgstr "Copied!" + +msgid "Uploaded on {{uploadDate}}" +msgstr "Uploaded on {{uploadDate}}" + +msgid "Published in: {{publishInfo}}" +msgstr "Published in: {{publishInfo}}" + +msgid "{{count}} more versions exist for this record" +msgstr "{{count}} more versions exist for this record" + +msgid "{{count}} more versions exist for this record_plural" +msgstr "{{count}} more versions exist for this record" + +msgid "We couldn't find any matches for {{- search}}" +msgstr "We couldn't find any matches for {{- search}}" + +msgid "<0>For more tips, check out our <2>search guide for defining advanced search queries." +msgstr "<0>For more tips, check out our <2>search guide for defining advanced search queries." + +msgid "Search in my collections..." +msgstr "Search in my collections..." + +msgid "L" +msgstr "L" + +msgid "O" +msgstr "O" + +msgid "E" +msgstr "E" + +msgid "N" +msgstr "N" + +msgid "T" +msgstr "T" + +msgid "P" +msgstr "P" + +msgid "iterator" +msgstr "iterator" + +msgid "toStringTag" +msgstr "toStringTag" + +msgid "Chapter number/label" +msgstr "Chapter number/label" + +msgid "Quick create" +msgstr "Quick create" + +msgid "Add a work" +msgstr "Add a work" + +msgid "Settings" +msgstr "Settings" + +msgid "My account" +msgstr "My account" + +msgid "Log out" +msgstr "Log out" + +msgid "Log in" +msgstr "Log in" + +msgid "My KC profile" +msgstr "My KC profile" + +msgid "Menu" +msgstr "Menu" + +msgid "Help and support" +msgstr "Help and support" + +msgid "KC Home" +msgstr "KC Home" + +msgid "<0><0>metadata.publication_date:[2017-01-01 TO *] will give you all the publications from 2017 until today." +msgstr "<0><0>metadata.publication_date:[2017-01-01 TO *] will give you all the publications from 2017 until today." + diff --git a/site/kcworks/assets/semantic-ui/translations/kcworks/messages/en/translations.json b/site/kcworks/assets/semantic-ui/translations/kcworks/messages/en/translations.json new file mode 100644 index 000000000..57a4e17c0 --- /dev/null +++ b/site/kcworks/assets/semantic-ui/translations/kcworks/messages/en/translations.json @@ -0,0 +1,76 @@ +{ + "Browse": "Browse", + "Contribute": "Contribute", + "Previous slide": "Previous slide", + "Next slide": "Next slide", + "opens in new tab": "opens in new tab", + "Branding": "Branding", + "Submission information": "Submission information", + "Submission to this community does not require review, and will be published immediately.": "Submission to this community does not require review, and will be published immediately.", + "profile": "profile", + "Edit": "Edit", + "An error occurred.": "An error occurred.", + "Contribute a work": "Contribute a work", + "Manage collection": "Manage collection", + "Collection visibility": "Collection visibility", + "The collection is restricted to users with access.": "The collection is restricted to users with access.", + "Restricted": "Restricted", + "This is your collection's unique identifier, used as the last part of the collection URL. You will be able to access your collection at: ": "This is your collection's unique identifier, used as the last part of the collection URL. You will be able to access your collection at: ", + "URL Identifier": "URL Identifier", + "Your collection is publicly accessible and shows up in search results.": "Your collection is publicly accessible and shows up in search results.", + "Your collection is only accessible to users with access.": "Your collection is only accessible to users with access.", + "Start your new collection": "Start your new collection", + "Collection name": "Collection name", + "Create collection": "Create collection", + "No collections found!": "No collections found!", + "Reset search": "Reset search", + "Search": "Search", + "Search collections...": "Search collections...", + "Filter results": "Filter results", + "Sort by": "Sort by", + "Search filters": "Search filters", + "Search records in collection...": "Search records in collection...", + " <2> works found": " <2> works found", + " <2> works found_plural": " <2> works found", + "Search records...": "Search records...", + "Search collection works...": "Search collection works...", + "This collection does not yet include any works you can view": "This collection does not yet include any works you can view", + "Start over": "Start over", + "ProTip": "ProTip", + "Search guide": "Search guide", + "Views": "Views", + "Downloads": "Downloads", + "Copy to clipboard": "Copy to clipboard", + "Copied!": "Copied!", + "Uploaded on {{uploadDate}}": "Uploaded on {{uploadDate}}", + "Published in: {{publishInfo}}": "Published in: {{publishInfo}}", + "{{count}} more versions exist for this record": "{{count}} more versions exist for this record", + "{{count}} more versions exist for this record_plural": "{{count}} more versions exist for this record", + "We couldn't find any matches for {{- search}}": "We couldn't find any matches for {{- search}}", + "<0>For more tips, check out our <2>search guide for defining advanced search queries.": "<0>For more tips, check out our <2>search guide for defining advanced search queries.", + "Search in my collections...": "Search in my collections...", + "L": "L", + "O": "O", + "E": "E", + "N": "N", + "T": "T", + "P": "P", + "iterator": "iterator", + "toStringTag": "toStringTag", + "Chapter number/label": "Chapter number/label", + "Quick create": "Quick create", + "Add a work": "Add a work", + "Settings": "Settings", + "My account": "My account", + "Log out": "Log out", + "Log in": "Log in", + "My KC profile": "My KC profile", + "Menu": "Menu", + "Help and support": "Help and support", + "KC Home": "KC Home", + "<0><0>metadata.publication_date:[2017-01-01 TO *] will give you all the publications from 2017 until today.": "<0><0>metadata.publication_date:[2017-01-01 TO *] will give you all the publications from 2017 until today.", + "<0>{{cmp}} <2> works found": "<0>{{cmp}} <2> works found", + "<0>{{cmp}} <2> works found_plural": "<0>{{cmp}} <2> works found", + "Collections": "Collections", + "My requests": "My requests" +} diff --git a/site/kcworks/assets/semantic-ui/translations/kcworks/messages/index.js b/site/kcworks/assets/semantic-ui/translations/kcworks/messages/index.js new file mode 100644 index 000000000..5fec7cdf0 --- /dev/null +++ b/site/kcworks/assets/semantic-ui/translations/kcworks/messages/index.js @@ -0,0 +1,5 @@ +import TRANSLATE_EN from "./en/translations.json"; + +export const translations = { + en: { translation: TRANSLATE_EN }, +}; \ No newline at end of file diff --git a/site/kcworks/assets/semantic-ui/translations/kcworks/package-lock.json b/site/kcworks/assets/semantic-ui/translations/kcworks/package-lock.json new file mode 100644 index 000000000..1080dd72b --- /dev/null +++ b/site/kcworks/assets/semantic-ui/translations/kcworks/package-lock.json @@ -0,0 +1,2182 @@ +{ + "name": "kcworks-ui", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "kcworks-ui", + "devDependencies": { + "i18next": "^20.3.0", + "i18next-browser-languagedetector": "^6.1.0", + "i18next-conv": "^10.2.0", + "i18next-scanner": "^3.0.0", + "react-i18next": "^11.11.3" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-class-fields": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/acorn-class-fields/-/acorn-class-fields-0.3.7.tgz", + "integrity": "sha512-jdUWSFce0fuADUljmExz4TWpPkxmRW/ZCPRqeeUzbGf0vFUcpQYbyq52l75qGd0oSwwtAepeL6hgb/naRgvcKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-private-class-elements": "^0.2.7" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^6 || ^7 || ^8" + } + }, + "node_modules/acorn-dynamic-import": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", + "deprecated": "This is probably built in to whatever tool you're using. If you still need it... idk", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0" + } + }, + "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/acorn-private-class-elements": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/acorn-private-class-elements/-/acorn-private-class-elements-0.2.7.tgz", + "integrity": "sha512-+GZH2wOKNZOBI4OOPmzpo4cs6mW297sn6fgIk1dUI08jGjhAaEwvC39mN2gJAg2lmAQJ1rBkFqKWonL3Zz6PVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^6.1.0 || ^7 || ^8" + } + }, + "node_modules/acorn-private-methods": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/acorn-private-methods/-/acorn-private-methods-0.3.3.tgz", + "integrity": "sha512-46oeEol3YFvLSah5m9hGMlNpxDBCEkdceJgf01AjqKYTK9r6HexKs2rgSbLK81pYjZZMonhftuUReGMlbbv05w==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-private-class-elements": "^0.2.7" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^6 || ^7 || ^8" + } + }, + "node_modules/acorn-static-class-features": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/acorn-static-class-features/-/acorn-static-class-features-0.2.4.tgz", + "integrity": "sha512-5X4mpYq5J3pdndLmIB0+WtFd/mKWnNYpuTlTzj32wUu/PMmEGOiayQ5UrqgwdBNiaZBtDDh5kddpP7Yg2QaQYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-private-class-elements": "^0.2.7" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^6.1.0 || ^7 || ^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk/node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "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/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "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", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/cloneable-readable/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/cloneable-readable/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/cloneable-readable/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/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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/duplexify/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexify/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/duplexify/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/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", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "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/ensure-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ensure-array/-/ensure-array-1.0.0.tgz", + "integrity": "sha512-A+3Ntl5WS+GjDnHtC67dKIjw+IoGoeFdNvjn3ZfKEmZgWUz0nxBPE4W52QMCbGZsat0VwWskD5T6AEpe3T2d1g==", + "dev": true, + "license": "MIT" + }, + "node_modules/eol": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", + "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esprima-next": { + "version": "5.8.4", + "resolved": "https://registry.npmjs.org/esprima-next/-/esprima-next-5.8.4.tgz", + "integrity": "sha512-8nYVZ4ioIH4Msjb/XmhnBdz5WRRBaYqevKa1cv9nGJdCehMbzZCPNEEnqfLCZVetUVrUPEcb5IYyu1GG4hFqgg==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/flush-write-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/flush-write-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fs-mkdirp-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/fs-mkdirp-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs-mkdirp-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fs-mkdirp-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gettext-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-4.2.0.tgz", + "integrity": "sha512-aMgPyjC9W5Mz9tbFU8DcQ7GYMXoFWq633kaWGt4imlcpBWzDIWk7HY7nCSZTCJxyjRaLq9L/NEjMKkZ9gR630Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "content-type": "^1.0.4", + "encoding": "^0.1.13", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.1" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/glob-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/glob-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/glob-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/gulp-sort": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-sort/-/gulp-sort-2.0.0.tgz", + "integrity": "sha512-MyTel3FXOdh1qhw1yKhpimQrAmur9q1X0ZigLmCOxouQD+BD3za9/89O+HfbgBQvvh4igEbp0/PUWO+VqGYG1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "through2": "^2.0.1" + } + }, + "node_modules/gulp-sort/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/gulp-sort/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/gulp-sort/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/gulp-sort/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "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/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "void-elements": "3.1.0" + } + }, + "node_modules/i18next": { + "version": "20.6.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz", + "integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.0" + } + }, + "node_modules/i18next-browser-languagedetector": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-6.1.8.tgz", + "integrity": "sha512-Svm+MduCElO0Meqpj1kJAriTC6OhI41VhlT/A0UPjGoPZBhAHIaGE5EfsHlTpgdH09UVX7rcc72pSDDBeKSQQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.19.0" + } + }, + "node_modules/i18next-conv": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/i18next-conv/-/i18next-conv-10.2.0.tgz", + "integrity": "sha512-wBH1z874bw7p7Q0sUWBVqxfQjOXhd3h7GC4bIUXrrzoLmvRdPtRqSYlXN150YR9+5IDYLqkUUYu0IIKDsiPmpw==", + "dev": true, + "license": "SEE LICENSE IN LICENSE.MD", + "dependencies": { + "arrify": "^2.0.1", + "chalk": "^4.0.0", + "commander": "^5.1.0", + "gettext-parser": "^4.0.3", + "mkdirp": "^1.0.4", + "node-gettext": "^3.0.0" + }, + "bin": { + "i18next-conv": "bin/index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/i18next-scanner": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/i18next-scanner/-/i18next-scanner-3.3.0.tgz", + "integrity": "sha512-wVCv2HCpFWi/KIU/UiWgzUZg3Ih9zO8GLRv0aAQWJ7LUukrLaNkzdtVdkED6b4AiEDfCuM4X1KLcBi+pvL6JzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.0.4", + "acorn-dynamic-import": "^4.0.0", + "acorn-jsx": "^5.3.1", + "acorn-stage3": "^4.0.0", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "clone-deep": "^4.0.0", + "commander": "^6.2.0", + "deepmerge": "^4.0.0", + "ensure-array": "^1.0.0", + "eol": "^0.9.1", + "esprima-next": "^5.7.0", + "gulp-sort": "^2.0.0", + "i18next": "*", + "lodash": "^4.0.0", + "parse5": "^6.0.0", + "sortobject": "^4.0.0", + "through2": "^4.0.0", + "vinyl": "^2.2.0", + "vinyl-fs": "^3.0.1" + }, + "bin": { + "i18next-scanner": "bin/cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/i18next-scanner/node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/i18next-scanner/node_modules/acorn-stage3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-stage3/-/acorn-stage3-4.0.0.tgz", + "integrity": "sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn-class-fields": "^0.3.7", + "acorn-private-methods": "^0.3.3", + "acorn-static-class-features": "^0.2.4" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^7.4 || ^8" + } + }, + "node_modules/i18next-scanner/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "license": "MIT" + }, + "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-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "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" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "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/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, + "license": "MIT" + }, + "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/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream/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/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, + "license": "MIT", + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", + "dev": true, + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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" + }, + "engines": { + "node": "*" + } + }, + "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" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-gettext": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/node-gettext/-/node-gettext-3.0.0.tgz", + "integrity": "sha512-/VRYibXmVoN6tnSAY2JWhNRhWYJ8Cd844jrZU/DwLVoI4vBI6ceYbd8i42sYZ9uOgDH3S7vslIKOWV/ZrT2YBA==", + "dev": true, + "dependencies": { + "lodash.get": "^4.4.2" + } + }, + "node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/ordered-read-streams/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/ordered-read-streams/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/ordered-read-streams/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/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true, + "license": "MIT" + }, + "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/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, + "license": "MIT" + }, + "node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-i18next": { + "version": "11.18.6", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.18.6.tgz", + "integrity": "sha512-yHb2F9BiT0lqoQDt8loZ5gWP331GwctHz9tYQ8A2EIEUu+CcEdjBLQWli1USG3RdWQt3W+jqQLg/d4rrQR96LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.14.5", + "html-parse-stringify": "^3.0.1" + }, + "peerDependencies": { + "i18next": ">= 19.0.0", + "react": ">= 16.8.0" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-bom-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/remove-bom-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/remove-bom-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/remove-bom-stream/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true, + "license": "ISC" + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sortobject": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/sortobject/-/sortobject-4.17.0.tgz", + "integrity": "sha512-gzx7USv55AFRQ7UCWJHHauwD/ptUHF9MLXCGO3f5M9zauDPZ/4a9H6/VVbOXefdpEoI1unwB/bArHIVMbWBHmA==", + "dev": true, + "license": "Artistic-2.0", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true, + "license": "MIT" + }, + "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/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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/through2-filter/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2-filter/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/through2-filter/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/through2-filter/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/to-through/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/to-through/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-through/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/to-through/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "license": "MIT", + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/vinyl-fs/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/vinyl-fs/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/vinyl-fs/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + } + } +} diff --git a/site/kcworks/assets/semantic-ui/translations/kcworks/package.json b/site/kcworks/assets/semantic-ui/translations/kcworks/package.json new file mode 100644 index 000000000..c0ecd0169 --- /dev/null +++ b/site/kcworks/assets/semantic-ui/translations/kcworks/package.json @@ -0,0 +1,22 @@ +{ + "name": "kcworks-translations", + "config": { + "languages": [ + "en" + ] + }, + "devDependencies": { + "i18next-conv": "^10.2.0", + "i18next-scanner": "^3.0.0", + "react-i18next": "^11.11.3", + "i18next": "^20.3.0", + "i18next-browser-languagedetector": "^6.1.0" + }, + "scripts": { + "extract_messages": "i18next-scanner --config i18next-scanner.config.js '../../js/**/*.{js,jsx}'", + "postextract_messages": "i18next-conv -l en -s ./messages/en/translations.json -t ./translations.pot", + "compile_catalog": "node ./scripts/compileCatalog.js", + "init_catalog": "node ./scripts/initCatalog", + "json_to_po": "node ./scripts/jsonToPo.js" + } +} \ No newline at end of file diff --git a/site/kcworks/assets/semantic-ui/translations/kcworks/scripts/compileCatalog.js b/site/kcworks/assets/semantic-ui/translations/kcworks/scripts/compileCatalog.js new file mode 100755 index 000000000..544fb80b0 --- /dev/null +++ b/site/kcworks/assets/semantic-ui/translations/kcworks/scripts/compileCatalog.js @@ -0,0 +1,37 @@ +#!/usr/bin/env node + +const fs = require('fs'); +const path = require('path'); +const { execSync } = require('child_process'); + +const LANGUAGES = ['en']; +const MESSAGES_DIR = path.join(__dirname, '..', 'messages'); + +// Create messages directory if it doesn't exist +if (!fs.existsSync(MESSAGES_DIR)) { + fs.mkdirSync(MESSAGES_DIR, { recursive: true }); +} + +// Process each language +LANGUAGES.forEach(lang => { + const langDir = path.join(MESSAGES_DIR, lang); + const poFile = path.join(langDir, 'messages.po'); + const jsonFile = path.join(langDir, 'translations.json'); + + // Create language directory if it doesn't exist + if (!fs.existsSync(langDir)) { + fs.mkdirSync(langDir, { recursive: true }); + } + + // Convert .po to .json + if (fs.existsSync(poFile)) { + try { + execSync(`i18next-conv -l ${lang} -s ${poFile} -t ${jsonFile}`); + console.log(`Successfully compiled ${lang} translations`); + } catch (error) { + console.error(`Error compiling ${lang} translations:`, error); + } + } else { + console.warn(`No .po file found for ${lang}`); + } +}); \ No newline at end of file diff --git a/site/kcworks/assets/semantic-ui/translations/kcworks/scripts/initCatalog.js b/site/kcworks/assets/semantic-ui/translations/kcworks/scripts/initCatalog.js new file mode 100755 index 000000000..68124bdc6 --- /dev/null +++ b/site/kcworks/assets/semantic-ui/translations/kcworks/scripts/initCatalog.js @@ -0,0 +1,37 @@ +#!/usr/bin/env node + +const fs = require('fs'); +const path = require('path'); +const { execSync } = require('child_process'); + +const LANGUAGES = ['en']; +const MESSAGES_DIR = path.join(__dirname, '..', 'messages'); +const POT_FILE = path.join(__dirname, '..', 'translations.pot'); + +// Create messages directory if it doesn't exist +if (!fs.existsSync(MESSAGES_DIR)) { + fs.mkdirSync(MESSAGES_DIR, { recursive: true }); +} + +// Process each language +LANGUAGES.forEach(lang => { + const langDir = path.join(MESSAGES_DIR, lang); + const poFile = path.join(langDir, 'messages.po'); + + // Create language directory if it doesn't exist + if (!fs.existsSync(langDir)) { + fs.mkdirSync(langDir, { recursive: true }); + } + + // Initialize .po file from .pot + if (fs.existsSync(POT_FILE)) { + try { + execSync(`msginit --no-translator -i ${POT_FILE} -o ${poFile} -l ${lang}`); + console.log(`Successfully initialized ${lang} translations`); + } catch (error) { + console.error(`Error initializing ${lang} translations:`, error); + } + } else { + console.warn('No .pot file found. Please run extract_messages first.'); + } +}); \ No newline at end of file diff --git a/site/kcworks/assets/semantic-ui/translations/kcworks/scripts/jsonToPo.js b/site/kcworks/assets/semantic-ui/translations/kcworks/scripts/jsonToPo.js new file mode 100755 index 000000000..35aa4ed03 --- /dev/null +++ b/site/kcworks/assets/semantic-ui/translations/kcworks/scripts/jsonToPo.js @@ -0,0 +1,81 @@ +#!/usr/bin/env node + +const fs = require('fs'); +const path = require('path'); +const { execSync } = require('child_process'); + +const MESSAGES_DIR = path.join(__dirname, '..', 'messages'); +const LANGUAGES = ['en']; // Add more languages as needed + +// Function to escape strings for PO files +function escapePoString(str) { + return str + .replace(/\\/g, '\\\\') // Escape backslashes + .replace(/"/g, '\\"') // Escape quotes + .replace(/\n/g, '\\n') // Escape newlines + .replace(/\t/g, '\\t'); // Escape tabs +} + +// Create messages directory if it doesn't exist +if (!fs.existsSync(MESSAGES_DIR)) { + fs.mkdirSync(MESSAGES_DIR, { recursive: true }); +} + +// Process each language +LANGUAGES.forEach(lang => { + const langDir = path.join(MESSAGES_DIR, lang); + const jsonFile = path.join(langDir, 'translations.json'); + const poFile = path.join(langDir, 'messages.po'); + + // Create language directory if it doesn't exist + if (!fs.existsSync(langDir)) { + fs.mkdirSync(langDir, { recursive: true }); + } + + if (fs.existsSync(jsonFile)) { + try { + // Read the JSON file + const translations = JSON.parse(fs.readFileSync(jsonFile, 'utf8')); + + if (!translations || typeof translations !== 'object') { + console.error(`Invalid JSON structure in ${jsonFile}. Expected an object with key/value pairs.`); + return; + } + + // Create a temporary file with msgid/msgstr pairs + const tempFile = path.join(langDir, 'temp.po'); + let poContent = `msgid "" +msgstr "" +"Content-Type: text/plain; charset=UTF-8\\n" +"Content-Transfer-Encoding: 8bit\\n" +"Language: ${lang}\\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\\n" +"\\n" + +`; + + // Add each translation + Object.entries(translations).forEach(([key, value]) => { + poContent += `msgid "${escapePoString(key)}"\n`; + poContent += `msgstr "${escapePoString(value)}"\n\n`; + }); + + // Write the temporary file + fs.writeFileSync(tempFile, poContent); + + // Use msgfmt to validate and format the PO file + try { + execSync(`msgfmt -o /dev/null ${tempFile}`); + fs.renameSync(tempFile, poFile); + console.log(`Successfully created ${poFile}`); + } catch (error) { + console.error(`Error validating PO file for ${lang}:`, error.message); + fs.unlinkSync(tempFile); + } + } catch (error) { + console.error(`Error processing ${jsonFile}:`, error.message); + } + } else { + console.warn(`No JSON file found for ${lang}`); + } +}); \ No newline at end of file diff --git a/site/kcworks/assets/semantic-ui/translations/kcworks/translations.pot b/site/kcworks/assets/semantic-ui/translations/kcworks/translations.pot new file mode 100644 index 000000000..7fe6dcf53 --- /dev/null +++ b/site/kcworks/assets/semantic-ui/translations/kcworks/translations.pot @@ -0,0 +1,246 @@ +msgid "" +msgstr "" +"Project-Id-Version: i18next-conv\n" +"mime-version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"POT-Creation-Date: 2025-04-27T23:10:43.939Z\n" +"PO-Revision-Date: 2025-04-27T23:10:43.939Z\n" +"Language: en\n" + +msgid "Browse" +msgstr "Browse" + +msgid "Contribute" +msgstr "Contribute" + +msgid "Previous slide" +msgstr "Previous slide" + +msgid "Next slide" +msgstr "Next slide" + +msgid "opens in new tab" +msgstr "opens in new tab" + +msgid "Branding" +msgstr "Branding" + +msgid "Submission information" +msgstr "Submission information" + +msgid "" +"Submission to this community does not require review, and will be published " +"immediately." +msgstr "" +"Submission to this community does not require review, and will be published " +"immediately." + +msgid "profile" +msgstr "profile" + +msgid "Edit" +msgstr "Edit" + +msgid "An error occurred." +msgstr "An error occurred." + +msgid "Contribute a work" +msgstr "Contribute a work" + +msgid "Manage collection" +msgstr "Manage collection" + +msgid "Collection visibility" +msgstr "Collection visibility" + +msgid "The collection is restricted to users with access." +msgstr "The collection is restricted to users with access." + +msgid "Restricted" +msgstr "Restricted" + +msgid "" +"This is your collection's unique identifier, used as the last part of the " +"collection URL. You will be able to access your collection at: " +msgstr "" +"This is your collection's unique identifier, used as the last part of the " +"collection URL. You will be able to access your collection at: " + +msgid "URL Identifier" +msgstr "URL Identifier" + +msgid "Your collection is publicly accessible and shows up in search results." +msgstr "Your collection is publicly accessible and shows up in search results." + +msgid "Your collection is only accessible to users with access." +msgstr "Your collection is only accessible to users with access." + +msgid "Start your new collection" +msgstr "Start your new collection" + +msgid "Collection name" +msgstr "Collection name" + +msgid "Create collection" +msgstr "Create collection" + +msgid "No collections found!" +msgstr "No collections found!" + +msgid "Reset search" +msgstr "Reset search" + +msgid "Search" +msgstr "Search" + +msgid "Search collections..." +msgstr "Search collections..." + +msgid "Filter results" +msgstr "Filter results" + +msgid "Sort by" +msgstr "Sort by" + +msgid "Search filters" +msgstr "Search filters" + +msgid "Search records in collection..." +msgstr "Search records in collection..." + +msgid " <2> works found" +msgid_plural " <2> works found" +msgstr[0] " <2> works found" +msgstr[1] " <2> works found" + +msgid "Search records..." +msgstr "Search records..." + +msgid "Search collection works..." +msgstr "Search collection works..." + +msgid "This collection does not yet include any works you can view" +msgstr "This collection does not yet include any works you can view" + +msgid "Start over" +msgstr "Start over" + +msgid "ProTip" +msgstr "ProTip" + +msgid "Search guide" +msgstr "Search guide" + +msgid "Views" +msgstr "Views" + +msgid "Downloads" +msgstr "Downloads" + +msgid "Copy to clipboard" +msgstr "Copy to clipboard" + +msgid "Copied!" +msgstr "Copied!" + +msgid "Uploaded on {{uploadDate}}" +msgstr "Uploaded on {{uploadDate}}" + +msgid "Published in: {{publishInfo}}" +msgstr "Published in: {{publishInfo}}" + +msgid "{{count}} more versions exist for this record" +msgid_plural "{{count}} more versions exist for this record" +msgstr[0] "{{count}} more versions exist for this record" +msgstr[1] "{{count}} more versions exist for this record" + +msgid "We couldn't find any matches for {{- search}}" +msgstr "We couldn't find any matches for {{- search}}" + +msgid "" +"<0>For more tips, check out our <2>search guide for defining advanced " +"search queries." +msgstr "" +"<0>For more tips, check out our <2>search guide for defining advanced " +"search queries." + +msgid "Search in my collections..." +msgstr "Search in my collections..." + +msgid "L" +msgstr "L" + +msgid "O" +msgstr "O" + +msgid "E" +msgstr "E" + +msgid "N" +msgstr "N" + +msgid "T" +msgstr "T" + +msgid "P" +msgstr "P" + +msgid "iterator" +msgstr "iterator" + +msgid "toStringTag" +msgstr "toStringTag" + +msgid "Chapter number/label" +msgstr "Chapter number/label" + +msgid "Quick create" +msgstr "Quick create" + +msgid "Add a work" +msgstr "Add a work" + +msgid "Settings" +msgstr "Settings" + +msgid "My account" +msgstr "My account" + +msgid "Log out" +msgstr "Log out" + +msgid "Log in" +msgstr "Log in" + +msgid "My KC profile" +msgstr "My KC profile" + +msgid "Menu" +msgstr "Menu" + +msgid "Help and support" +msgstr "Help and support" + +msgid "KC Home" +msgstr "KC Home" + +msgid "<0>{{cmp}} <2> works found" +msgid_plural "<0>{{cmp}} <2> works found" +msgstr[0] "<0>{{cmp}} <2> works found" +msgstr[1] "<0>{{cmp}} <2> works found" + +msgid "Collections" +msgstr "Collections" + +msgid "My requests" +msgstr "My requests" + +msgctxt "" +"date:[2017-01-01 TO *] will give you all the publications from 2017 " +"until today." +msgid "<0><0>metadata.publication" +msgstr "" +"<0><0>metadata.publication_date:[2017-01-01 TO *] will give you all the " +"publications from 2017 until today." \ No newline at end of file diff --git a/site/kcworks/blueprints/menu_customization.py b/site/kcworks/blueprints/menu_customization.py index a04265000..448e0b734 100644 --- a/site/kcworks/blueprints/menu_customization.py +++ b/site/kcworks/blueprints/menu_customization.py @@ -1,4 +1,10 @@ -from flask_menu import register_menu +# Copyright (C) MESH Research, 2023 +# +# KCWorks is free software; you can redistribute it and/or modify it under the +# terms of the MIT License; see LICENSE file for more details. + +"""Blueprint for customizing the InvenioRDM menu in KCWorks.""" + from flask import Blueprint @@ -8,7 +14,6 @@ def create_blueprint(app): """Register blueprint routes on app.""" - # @register_menu(app, "main.kc_home", "Commons Home", order=1) def inner_create_blueprint(app): blueprint = Blueprint( "kcw_menu_customization", diff --git a/site/kcworks/cli.py b/site/kcworks/cli.py index 8c0687823..feb0ad428 100644 --- a/site/kcworks/cli.py +++ b/site/kcworks/cli.py @@ -1,11 +1,8 @@ -# -*- coding: utf-8 -*- +# Part of Knowledge Commons Works +# Copyright (C) 2023-2025 MESH Research # -# This file is part of Knowledge Commons Works -# Copyright (C) 2023-2024, MESH Research -# -# Knowledge Commons Works is free software; you can redistribute it and/or -# modify it under the terms of the MIT License; see LICENSE file for more -# details. +# KCWorks is free software; you can redistribute it and/or modify it under the +# terms of the MIT License; see LICENSE file for more details. # # Knowledge Commons Works is an extended instance of InvenioRDM: # Copyright (C) 2019-2024 CERN. @@ -16,16 +13,18 @@ # under the terms of the MIT License. See the LICENSE file in the # invenio-app-rdm package for more details. +"""KCWorks CLI.""" + +import sys + import click from flask.cli import with_appcontext from invenio_search.cli import abort_if_false, search_version_check from kcworks.services.search.indices import delete_index -import sys - +from kcworks.services.users.cli import group_users as group_users_command +from kcworks.services.users.cli import groups as groups_command from kcworks.services.users.cli import name_parts as name_parts_command from kcworks.services.users.cli import read as read_command -from kcworks.services.users.cli import groups as groups_command -from kcworks.services.users.cli import group_users as group_users_command from kcworks.services.users.cli import user_groups as user_groups_command UNMANAGED_INDICES = [ @@ -44,7 +43,7 @@ @click.group() def kcworks_users(): - """Utility commands for Knowledge Commons Works.""" + """CLI utility command group for Knowledge Commons Works.""" pass @@ -57,7 +56,7 @@ def kcworks_users(): @click.group() def kcworks_index(): - """KCWorks utility commands for search index management.""" + """KCWorks CLI utility commands for search index management.""" pass @@ -73,7 +72,7 @@ def kcworks_index(): @with_appcontext @search_version_check def destroy_indices(force): - """Destroy all indices that are not destroyed by invenio_search + """Destroy all indices that are not destroyed by invenio_search. THIS COMMAND WILL WIPE ALL DATA ON USAGE STATS. ONLY RUN THIS WHEN YOU KNOW WHAT YOU ARE DOING. Usage stats data is stored in Elasticsearch, and is not @@ -105,5 +104,5 @@ def destroy_indices(force): delete_index(UNMANAGED_INDICES, ignore=[400, 404] if force else None), length=len(UNMANAGED_INDICES), ) as bar: - for name, response in bar: + for name, _response in bar: bar.label = name diff --git a/site/kcworks/dependencies/invenio-group-collections-kcworks b/site/kcworks/dependencies/invenio-group-collections-kcworks index 30245b2ac..3580c34cc 160000 --- a/site/kcworks/dependencies/invenio-group-collections-kcworks +++ b/site/kcworks/dependencies/invenio-group-collections-kcworks @@ -1 +1 @@ -Subproject commit 30245b2ac0d1f0cf8c6884ca90f60527feac7dff +Subproject commit 3580c34cc3f407b2dbc284e0e096872ebfd085fc diff --git a/site/kcworks/dependencies/invenio-modular-deposit-form b/site/kcworks/dependencies/invenio-modular-deposit-form index a516077f3..b963e4a9c 160000 --- a/site/kcworks/dependencies/invenio-modular-deposit-form +++ b/site/kcworks/dependencies/invenio-modular-deposit-form @@ -1 +1 @@ -Subproject commit a516077f3add3bc5f259b3f3d7768a65fde77e11 +Subproject commit b963e4a9c90091e7561cbac59be18458426739db diff --git a/site/kcworks/dependencies/invenio-modular-detail-page b/site/kcworks/dependencies/invenio-modular-detail-page index e221df5cf..542473d34 160000 --- a/site/kcworks/dependencies/invenio-modular-detail-page +++ b/site/kcworks/dependencies/invenio-modular-detail-page @@ -1 +1 @@ -Subproject commit e221df5cfcf9ca9b7398fa1e6596717b986322dc +Subproject commit 542473d34ecd5098913eb967b409c583a0accb2d diff --git a/site/kcworks/dependencies/invenio-rdm-records b/site/kcworks/dependencies/invenio-rdm-records index d0de681c5..0012268a8 160000 --- a/site/kcworks/dependencies/invenio-rdm-records +++ b/site/kcworks/dependencies/invenio-rdm-records @@ -1 +1 @@ -Subproject commit d0de681c5f615002b7a560b4091676c813c1010c +Subproject commit 0012268a864a41174b328b0d873ff1510dc639e1 diff --git a/site/kcworks/dependencies/invenio-record-importer-kcworks b/site/kcworks/dependencies/invenio-record-importer-kcworks index f00bd4e90..5d1266ef3 160000 --- a/site/kcworks/dependencies/invenio-record-importer-kcworks +++ b/site/kcworks/dependencies/invenio-record-importer-kcworks @@ -1 +1 @@ -Subproject commit f00bd4e90864972c37bfa2cc9bcef36edd025b6d +Subproject commit 5d1266ef3310ffa7309b4e162299108e4c6589cd diff --git a/site/kcworks/dependencies/invenio-remote-api-provisioner b/site/kcworks/dependencies/invenio-remote-api-provisioner index fe40e6e84..97e5a4446 160000 --- a/site/kcworks/dependencies/invenio-remote-api-provisioner +++ b/site/kcworks/dependencies/invenio-remote-api-provisioner @@ -1 +1 @@ -Subproject commit fe40e6e845950d9a3ca1030efa3a962b955267bb +Subproject commit 97e5a4446fbb2eb24fa18d1cf24c875440bf0cac diff --git a/site/kcworks/dependencies/invenio-remote-user-data-kcworks b/site/kcworks/dependencies/invenio-remote-user-data-kcworks index 46649b727..2e0e556aa 160000 --- a/site/kcworks/dependencies/invenio-remote-user-data-kcworks +++ b/site/kcworks/dependencies/invenio-remote-user-data-kcworks @@ -1 +1 @@ -Subproject commit 46649b72793e8a1820674545001c9a71b7c32f6e +Subproject commit 2e0e556aaa581b015955a13334d085ff9d5d5640 diff --git a/site/kcworks/ext.py b/site/kcworks/ext.py index 0ae0cd31b..abcf6afa2 100644 --- a/site/kcworks/ext.py +++ b/site/kcworks/ext.py @@ -1,52 +1,85 @@ -from invenio_rdm_records.services.components import ( - DefaultRecordsComponents, +# Part of Knowledge Commons Works +# Copyright (C) 2023-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it under the +# terms of the MIT License; see LICENSE file for more details. + +"""KCWorks extension. + +Initialize the main KCWorks extension object along with its services, blueprints, +and components. +""" + +from flask import Flask +from invenio_rdm_records.services.components import DefaultRecordsComponents +from kcworks.services.notifications.service import ( + InternalNotificationService, + InternalNotificationServiceConfig, ) from kcworks.services.records.components.first_record_component import ( FirstRecordComponent, ) -from kcworks.services.notifications.service import ( - InternalNotificationService, - InternalNotificationServiceConfig, +from kcworks.services.records.components.per_field_permissions_component import ( + PerFieldEditPermissionsComponent, +) +from kcworks.services.records.record_communities.community_change_permissions_component import ( # noqa: E501 + CommunityChangePermissionsComponent, ) -class KCWorks(object): - def __init__(self, app=None) -> None: - """Extention initialization.""" +class KCWorks: + """The main KCWorks extension object.""" + + def __init__(self, app: Flask | None = None) -> None: + """Initialize the KCWorks extension object. + + Args: + app (Flask): The Flask application object on which to initialize + the extension + """ if app: self.init_app(app) - def init_app(self, app) -> None: - """Registers the Flask extension during app initialization. + def init_app(self, app: Flask) -> None: + """Registers the KCWorks extension on the Flask object at app initialization. Args: - app (Flask): the Flask application object on which to initialize + app (Flask): The Flask application object on which to initialize the extension """ + app.logger.debug("Initializing KCWorks extension") self.init_services(app) self.init_components(app) app.extensions["kcworks"] = self - def init_services(self, app): + def init_services(self, app: Flask) -> None: """Initialize services for the KCWorks extension. Args: - app (_type_): _description_ + app (Flask): The Flask application object on which to initialize + the extension """ self.internal_notifications_service = InternalNotificationService( InternalNotificationServiceConfig.build(app) ) - def init_components(self, app): + def init_components(self, app: Flask) -> None: """Initialize service components for the KCWorks extension. Args: - app (_type_): _description_ + app (Flask): The Flask application object on which to initialize + the extension service components """ components = app.config.get( "RDM_RECORDS_SERVICE_COMPONENTS", [*DefaultRecordsComponents] ) - components += [ - FirstRecordComponent, - ] + components += [FirstRecordComponent, PerFieldEditPermissionsComponent] app.config["RDM_RECORDS_SERVICE_COMPONENTS"] = components + + record_communities_components = app.config.get( + "RDM_RECORD_COMMUNITIES_SERVICE_COMPONENTS", [] + ) + record_communities_components += [CommunityChangePermissionsComponent] + app.config["RDM_RECORD_COMMUNITIES_SERVICE_COMPONENTS"] = list( + set(record_communities_components) + ) diff --git a/site/kcworks/invenio_config.py b/site/kcworks/invenio_config.py deleted file mode 120000 index cd6bb3712..000000000 --- a/site/kcworks/invenio_config.py +++ /dev/null @@ -1 +0,0 @@ -../../invenio.cfg \ No newline at end of file diff --git a/site/kcworks/metadata_fields/codemeta_fields.py b/site/kcworks/metadata_fields/codemeta_fields.py index d7551cac0..90d1cbec4 100644 --- a/site/kcworks/metadata_fields/codemeta_fields.py +++ b/site/kcworks/metadata_fields/codemeta_fields.py @@ -1,63 +1,80 @@ -# -*- coding: utf-8 -*- +# Part of Knowledge Commons Works +# Copyright (C) MESH Research, 2023 +# +# Based on Invenio-RDM-Records, Copyright (C) 2023 CERN. +# +# KCWorks and Invenio-RDM-Records are free software; you can redistribute them +# and/or modify them under the terms of the MIT License; see LICENSE file for +# more details. + +"""Custom fields UI configuration for codemeta metadata. + +Implements UI configuration for the following fields: +- code:codeRepository +- code:programmingLanguage +- code:runtimePlatform +- code:operatingSystem +- code:developmentStatus +""" + from invenio_i18n import lazy_gettext as _ KCR_CODEMETA_CUSTOM_FIELDS_UI = { "section": _("Software"), "fields": [ - dict( - field="code:codeRepository", - ui_widget="TextField", - props=dict( - label="Repository URL", - icon="linkify", - description="URL or link where the code repository is hosted.", - ), - ), - dict( - field="code:programmingLanguage", - ui_widget="TextField", - props=dict( - label="Programming language", - icon="code", - description="Repository's programming language.", - placeholder="Python ...", - ), - ), - dict( - field="code:runtimePlatform", - ui_widget="TextField", - props=dict( - label="Runtime platform", - icon="cog", - description=( - "Repository runtime platform or script interpreter" - " dependencies." + { + "field": "code:codeRepository", + "ui_widget": "TextField", + "props": { + "label": "Repository URL", + "icon": "linkify", + "description": "URL or link where the code repository is hosted.", + }, + }, + { + "field": "code:programmingLanguage", + "ui_widget": "TextField", + "props": { + "label": "Programming language", + "icon": "code", + "description": "Repository's programming language.", + "placeholder": "Python ...", + }, + }, + { + "field": "code:runtimePlatform", + "ui_widget": "TextField", + "props": { + "label": "Runtime platform", + "icon": "cog", + "description": ( + "Repository runtime platform or script interpreter" " dependencies." ), - placeholder="Java v1, Python2.3, .Net Framework 3.0 ...", - ), - ), - dict( - field="code:operatingSystem", - ui_widget="TextField", - props=dict( - label="Supported operating system", - icon="laptop", - description="Supported operating systems.", - placeholder="Windows 7, OSX 10.6, Android 1.6 ...", - ), - ), - dict( - field="code:developmentStatus", - ui_widget="Dropdown", - props=dict( - label="Development status", - placeholder="", - icon="heartbeat", - description="Repository current status", - search=False, - multiple=False, - clearable=True, - ), - ), + "placeholder": "Java v1, Python2.3, .Net Framework 3.0 ...", + }, + }, + { + "field": "code:operatingSystem", + "ui_widget": "TextField", + "props": { + "label": "Supported operating system", + "icon": "laptop", + "description": "Supported operating systems.", + "placeholder": "Windows 7, OSX 10.6, Android 1.6 ...", + }, + }, + { + "field": "code:developmentStatus", + "ui_widget": "Dropdown", + "props": { + "label": "Development status", + "placeholder": "", + "icon": "heartbeat", + "description": "Repository current status", + "search": False, + "multiple": False, + "clearable": True, + }, + }, ], } diff --git a/site/kcworks/metadata_fields/hclegacy_groups_for_deposit.py b/site/kcworks/metadata_fields/hclegacy_groups_for_deposit.py index 318876448..f15d23d43 100644 --- a/site/kcworks/metadata_fields/hclegacy_groups_for_deposit.py +++ b/site/kcworks/metadata_fields/hclegacy_groups_for_deposit.py @@ -1,10 +1,22 @@ +# Part of Knowledge Commons Works +# Copyright (C) MESH Research, 2023 +# +# KCWorks is free software; you can redistribute it and/or modify it under the +# terms of the MIT License; see LICENSE file for more details. + +"""Custom field for legacy groups_for_deposit from the CORE repository. + +This field is not used in the current repository, but is retained as legacy +data. +""" + from invenio_records_resources.services.custom_fields import BaseListCF from marshmallow import fields from marshmallow_utils.fields import SanitizedUnicode class GroupsForDepositCF(BaseListCF): - """Nested custom field.""" + """Custom field for legacy groups_for_deposit from the CORE repository.""" def __init__(self, name, **kwargs): """Constructor.""" @@ -18,7 +30,7 @@ def __init__(self, name, **kwargs): } }, multiple=True, - **kwargs + **kwargs, ) @property diff --git a/site/kcworks/metadata_fields/hclegacy_metadata_fields.py b/site/kcworks/metadata_fields/hclegacy_metadata_fields.py index bb01e7742..c88110001 100644 --- a/site/kcworks/metadata_fields/hclegacy_metadata_fields.py +++ b/site/kcworks/metadata_fields/hclegacy_metadata_fields.py @@ -1,6 +1,10 @@ -""" -Custom fields to hold legacy metadata for records imported from the CORE -repository. +# Part of Knowledge Commons Works +# Copyright (C) MESH Research, 2023 +# +# KCWorks is free software; you can redistribute it and/or modify it under the +# terms of the MIT License; see LICENSE file for more details. + +"""Custom fields for legacy metadata imported from the CORE repository. Implements the following fields: @@ -20,10 +24,6 @@ hclegacy:file_pid The pid of the deposited file in the CORE repository. Each file had its own pid separate from the pid of the metadata record. -hclegacy:groups_for_deposit The HC groups with which the CORE deposit was - associated. This data is retained in a - legacy field because groups will not be - handled the same way in Invenio. hclegacy:previously_published Indicated that the original CORE deposit had been published prior to upload. hclegacy:publication_type There were multiple fields in the CORE data @@ -39,44 +39,38 @@ hclegacy:record_creation_date The creation date for the original CORE deposit record. hclegacy:record_identifier A number used in the original Solr indexing. It - concatenates the site ID (id number for HC, MLA, etc.) and original item id number in the - CORE database. + concatenates the site ID (id number for HC, MLA, + etc.) and original item id number in the CORE + database. hclegacy:society The HC societies to which the original uploader of - the CORE deposit belonged. It should include the society from whose site the deposit was made, although this may not be the case for bulk uploads. Possible values are: arlisna, hc, msu, ajs, hastac, sah, aseees, caa, up. (Deprecated and never used.) -hclegacy:submitter_org_memberships The HC organizations to which the user - who uploaded the deposit belonged. + the CORE deposit belonged. It should include the + society from whose site the deposit was made, + although this may not be the case for bulk uploads. + Possible values are: arlisna, hc, msu, ajs, hastac, + sah, aseees, caa, up. (Deprecated and never used.) hclegacy:submitter_affiliation The institutional affiliation of the user who uploaded the deposit. hclegacy:submitter_id The user id number (in the HC database) for the user who originally deposited the CORE upload. +hclegacy:submitter_org_memberships The HC organizations to which the user + who uploaded the deposit belonged. +hclegacy:total_downloads The total number of downloads for this record in + the CORE repository before migration. +hclegacy:total_views The total number of views for this record in the + CORE repository before migration. """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import BaseCF, TextCF +from invenio_records_resources.services.custom_fields import TextCF from invenio_records_resources.services.custom_fields.number import IntegerCF -from invenio_records_resources.services.custom_fields.date import ( - ISODateStringCF, -) -from invenio_vocabularies.services.custom_fields import VocabularyCF -from marshmallow import fields, validate -from marshmallow_utils.fields import ( - SanitizedUnicode, - SanitizedHTML, - StrippedHTML, - EDTFDateString, -) +from marshmallow_utils.fields import SanitizedUnicode HCLEGACY_NAMESPACE = { "hclegacy": "", } HCLEGACY_CUSTOM_FIELDS = [ - # VocabularyCF( - # name="hclegacy:collection", - # vocabulary_id="hcCollections", # controlled vocabulary id defined in the vocabularies.yaml file - # dump_options=True, # True when the list of all possible values will be visible in the dropdown UI component, typically for small vocabularies - # multiple=False, # if the field accepts a list of values (True) or single value (False) - # field_cls=SanitizedUnicode, + TextCF(name="hclegacy:collection"), # ), TextCF(name="hclegacy:collection"), IntegerCF(name="hclegacy:committee_deposit"), diff --git a/site/kcworks/metadata_fields/imprint_fields.py b/site/kcworks/metadata_fields/imprint_fields.py index 960e05d5f..e5f253a7b 100644 --- a/site/kcworks/metadata_fields/imprint_fields.py +++ b/site/kcworks/metadata_fields/imprint_fields.py @@ -1,4 +1,20 @@ -# -*- coding: utf-8 -*- +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# Based on invenio-rdm-records, Copyright (C) 2021-2024 TU Wien. +# +# invenio-rdm-records is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""UI configuration for the imprint section custom fields. + +These fields are included in invenio-rdm-records and simply need to be +enabled, but we want to customize the UI configuration. +""" + from invenio_i18n import lazy_gettext as _ KCR_IMPRINT_CUSTOM_FIELDS_UI = { diff --git a/site/kcworks/metadata_fields/journal_fields.py b/site/kcworks/metadata_fields/journal_fields.py index 72d36f04f..93495a23c 100644 --- a/site/kcworks/metadata_fields/journal_fields.py +++ b/site/kcworks/metadata_fields/journal_fields.py @@ -1,11 +1,19 @@ # -# Copyright (C) 2023 CERN. +# Part of Knowledge Commons Works +# Copyright (C) MESH Research, 2023 # -# Invenio-RDM-Records is free software; you can redistribute it and/or modify -# it under the terms of the MIT License; see LICENSE file for more details. -"""Journal custom fields. +# Based on Invenio-RDM-Records, Copyright (C) 2023 CERN. +# +# KCWorks and Invenio-RDM-Records are free software; you can redistribute them +# and/or modify them under the terms of the MIT License; see LICENSE file for +# more details. + +"""Journal custom fields UI configuration. -Implements the following fields: +These custom fields are provided optionally by invenio-rdm-records. We +provide our own overridden UI configuration here. + +Implements UI for the following fields: - journal.issue - journal.pages - journal.title @@ -14,7 +22,6 @@ from invenio_i18n import lazy_gettext as _ - KCR_JOURNAL_CUSTOM_FIELDS_UI = { "section": _("Journal"), "fields": [ diff --git a/site/kcworks/metadata_fields/kcr_ai_field.py b/site/kcworks/metadata_fields/kcr_ai_field.py index 32d7bcc9d..c2e9f5b29 100644 --- a/site/kcworks/metadata_fields/kcr_ai_field.py +++ b/site/kcworks/metadata_fields/kcr_ai_field.py @@ -1,17 +1,20 @@ -from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - BaseCF, -) +"""Custom field for AI usage. + +Adds the kcr:ai_usage field that contains two sub-fields: +- kcr:ai_used Whether the record was created using AI (boolean). +- kcr:ai_description A description of the AI used to create the record + (text). +""" -# from marshmallow import validate +from invenio_i18n import lazy_gettext as _ +from invenio_records_resources.services.custom_fields import BaseCF from marshmallow.fields import Boolean, Nested -from marshmallow_utils.fields import ( - SanitizedUnicode, -) +from marshmallow_utils.fields import SanitizedUnicode class AiUsageCF(BaseCF): - # """Nested custom field.""" + """Custom field for AI usage.""" + def __init__(self, name, **kwargs): """Constructor.""" super().__init__( @@ -24,15 +27,13 @@ def __init__(self, name, **kwargs): # ) # ), # multiple=False, - **kwargs + **kwargs, ) @property def field(self): """AiUsage fields definitions.""" - return Nested( - {"ai_used": Boolean(), "ai_description": SanitizedUnicode()} - ) + return Nested({"ai_used": Boolean(), "ai_description": SanitizedUnicode()}) @property def mapping(self): diff --git a/site/kcworks/metadata_fields/kcr_media_field.py b/site/kcworks/metadata_fields/kcr_media_field.py index 5ca5f7b37..3867a5130 100644 --- a/site/kcworks/metadata_fields/kcr_media_field.py +++ b/site/kcworks/metadata_fields/kcr_media_field.py @@ -1,16 +1,14 @@ -""" +"""Custom field for media. + kcr:media Free user-defined descriptors of the media or materials involved in the creation of a workd. This value is an array of strings. """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - TextCF, -) +from invenio_records_resources.services.custom_fields import TextCF from marshmallow_utils.fields import SanitizedUnicode - KCR_MEDIA_FIELD = [ TextCF(name="kcr:media", field_cls=SanitizedUnicode, multiple=True), ] @@ -31,8 +29,7 @@ ), "icon": "tags", "description": ( - "The media and materials used in the production of the" - " work." + "The media and materials used in the production of the work." ), }, } diff --git a/site/kcworks/metadata_fields/kcr_metadata_fields.py b/site/kcworks/metadata_fields/kcr_metadata_fields.py index d1c832b9d..bcaf5a613 100644 --- a/site/kcworks/metadata_fields/kcr_metadata_fields.py +++ b/site/kcworks/metadata_fields/kcr_metadata_fields.py @@ -1,11 +1,27 @@ -""" -kcr:commons_domain The commons domain from which the record was deposited. +"""Custom fields for Knowledge Commons Works. + kcr:chapter_label The title or heading for a chapter. Used primarily for bookSection resource type. +kcr:commons_domain The commons domain from which the record was deposited. +kcr:commons_search_recid The record ID of the Commons search record. +kcr:commons_search_updated The date and time the Commons search record was + last updated. +kcr:content_warning A content warning for the record. +kcr:course_title The title of the course for which the record is + being deposited. +kcr:degree The degree for which the record is being deposited. +kcr:discipline The discipline for which the record is being + deposited. kcr:edition The edition number (or other identifier) for the current item. +kcr:institution_department The department of the institution where the + record was deposited. kcr:meeting_organization The convening organization for a meeting or conference. +kcr:project_title The title of the project for which the record is + being deposited. +kcr:publication_url The URL of the publication for which the record is + being deposited. kcr:sponsoring_institution The institution responsible for the current item. Used primarily for resource types like whitePaper, and report. @@ -14,15 +30,13 @@ user with the HC user account. kcr:submitter_username The HC (Wordpress) username of the user who submitted the original CORE deposit. + """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - TextCF, - # EDTFDateStringCF, -) +from invenio_records_resources.services.custom_fields import TextCF from marshmallow import validate -from marshmallow_utils.fields import SanitizedUnicode, TZDateTime +from marshmallow_utils.fields import SanitizedUnicode KCR_NAMESPACE = { "kcr": "", @@ -150,8 +164,9 @@ "ui_widget": "TextField", "props": { "label": _("Commons domain"), - "description": "The Knowledge Commons domain from which the " - "deposit is uploaded", + "description": ( + "The Knowledge Commons domain from which the " "deposit is uploaded" + ), }, "icon": "world", } @@ -185,8 +200,7 @@ "label": "Project title", "placeholder": "", "icon": "briefcase", - "description": "Title for the larger project of which this work " - "is a part.", + "description": "Title for the larger project of which this work is a part.", }, } @@ -208,8 +222,9 @@ "label": "Submitter user name", "placeholder": "", "icon": "user", - "description": "Knowledge Commons username for the person " - "submitting this deposit", + "description": ( + "Knowledge Commons username for the person submitting this deposit" + ), }, } @@ -218,8 +233,7 @@ "ui_widget": "TextField", "props": { "label": _("Meeting organization"), - "description": "The organization sponsoring the meeting or " - "conference", + "description": "The organization sponsoring the meeting or conference", }, "icon": "group", } @@ -241,8 +255,10 @@ "template": "kcworks/content_warning.html", "props": { "label": _("Content warning"), - "description": "Does this deposit contain any potentially " - "difficult content you would like to flag for viewers?", + "description": ( + "Does this deposit contain any potentially " + "difficult content you would like to flag for viewers?" + ), "icon": "warning sign", }, "icon": "warning sign", diff --git a/site/kcworks/metadata_fields/kcr_notes_fields.py b/site/kcworks/metadata_fields/kcr_notes_fields.py index 452ab0055..5f70090b3 100644 --- a/site/kcworks/metadata_fields/kcr_notes_fields.py +++ b/site/kcworks/metadata_fields/kcr_notes_fields.py @@ -1,40 +1,50 @@ -""" +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Notes custom field. + kcr:notes Notes related to the record. This value is an array of objects, each of which has the keys "note_text", - "note_text_sanitized", and "note_description". The "note_text_sanitized" field contains the same string as "note_text" but with any allowed html tags stripped out. + "note_text_sanitized", and "note_description". The + "note_text_sanitized" field contains the same string as + "note_text" but with any allowed html tags stripped out. """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - BaseCF, - TextCF, - IntegerCF -) -from marshmallow import fields, validate -from marshmallow_utils.fields import ( - SanitizedUnicode, - SanitizedHTML, - StrippedHTML -) -from .kcr_metadata_fields import KCR_NAMESPACE +from invenio_records_resources.services.custom_fields import BaseCF, TextCF +from marshmallow import fields +from marshmallow_utils.fields import SanitizedHTML, SanitizedUnicode, StrippedHTML class NotesCF(BaseCF): -# """Nested custom field.""" + """Notes custom field.""" + def __init__(self, name, **kwargs): """Constructor.""" super().__init__( - name, - field_cls=fields.Nested, - field_args={ - 'nested': { - "note_text": SanitizedHTML(), - "note_text_sanitized": StrippedHTML(), - "note_description": SanitizedUnicode(), - } - }, - multiple=True, - **kwargs + name, + field_cls=fields.Nested, + field_args={ + "nested": { + "note_text": SanitizedHTML(), + "note_text_sanitized": StrippedHTML(), + "note_description": SanitizedUnicode(), + } + }, + multiple=True, + **kwargs, ) @property @@ -67,8 +77,7 @@ def mapping(self): "label": _("Description"), "placeholder": "", "description": _( - "A few words describing the kind of notes recorded " - "here." + "A few words describing the kind of notes recorded here." ), }, "note_text": { diff --git a/site/kcworks/metadata_fields/kcr_series_field.py b/site/kcworks/metadata_fields/kcr_series_field.py index 8bbd257cc..13d895aa0 100644 --- a/site/kcworks/metadata_fields/kcr_series_field.py +++ b/site/kcworks/metadata_fields/kcr_series_field.py @@ -1,36 +1,32 @@ -#! /usr/bin/env python -# -*- coding: utf-8 -*- -""" -kcr:notes Notes related to the record. This value is an array of - objects, each of which has the keys "note_text", - "note_text_sanitized", and "note_description". The "note_text_sanitized" field contains the same string as "note_text" but with any allowed html tags stripped out. +"""Series custom field. + +kcr:book_series Information on the series of which the current item is a + part. This value is an array of objects, each with the + keys "series_title" and "series_volume". """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - BaseCF, - BaseListCF, - TextCF, - IntegerCF, -) -from marshmallow import fields, validate -from marshmallow_utils.fields import SanitizedUnicode, SanitizedHTML, StrippedHTML -from .kcr_metadata_fields import KCR_NAMESPACE +from invenio_records_resources.services.custom_fields import BaseListCF +from marshmallow import fields +from marshmallow_utils.fields import SanitizedUnicode class BookSeriesCF(BaseListCF): + """Series custom field.""" + def __init__(self, name, **kwargs): """Constructor.""" super().__init__( name, field_cls=fields.Nested, - field_args=dict( - nested=dict( - series_title=SanitizedUnicode(), series_volume=SanitizedUnicode() - ) - ), + field_args={ + "nested": { + "series_title": SanitizedUnicode(), + "series_volume": SanitizedUnicode(), + }, + }, multiple=True, - **kwargs + **kwargs, ) @property diff --git a/site/kcworks/metadata_fields/kcr_user_tags_fields.py b/site/kcworks/metadata_fields/kcr_user_tags_fields.py index 35c85a391..ae16263a6 100644 --- a/site/kcworks/metadata_fields/kcr_user_tags_fields.py +++ b/site/kcworks/metadata_fields/kcr_user_tags_fields.py @@ -1,39 +1,27 @@ -""" +"""User-defined tags custom field. + kcr:user_defined_tags Free user-defined tags associated with the current item. This value is an array of objects, each with the keys "tag_label" and "tag_identifier". The - tag_identifier is an integer assigned automatically. The tag_label is the string entered - by the user. + tag_identifier is an integer assigned automatically. + The tag_label is the string entered by the user. """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - BaseListCF, - TextCF, - IntegerCF, -) -from marshmallow import fields, Schema, validate -from marshmallow_utils.fields import ( - SanitizedUnicode, - SanitizedHTML, - StrippedHTML, -) -from .kcr_metadata_fields import KCR_NAMESPACE +from invenio_records_resources.services.custom_fields import BaseListCF, TextCF +from marshmallow_utils.fields import SanitizedUnicode class UserTagsCF(BaseListCF): - """Nested custom field. + """User-defined tags custom field. + DEPRECATED """ def __init__(self, name, **kwargs): """Constructor.""" super().__init__( - name, - field_cls=SanitizedUnicode(), - field_args={}, - multiple=True, - **kwargs + name, field_cls=SanitizedUnicode(), field_args={}, multiple=True, **kwargs ) # @property @@ -59,9 +47,7 @@ def mapping(self): KCR_USER_TAGS_FIELDS = [ - TextCF( - name="kcr:user_defined_tags", field_cls=SanitizedUnicode, multiple=True - ), + TextCF(name="kcr:user_defined_tags", field_cls=SanitizedUnicode, multiple=True), ] @@ -78,7 +64,10 @@ def mapping(self): "Type your keywords here (press 'enter' to add each one)" ), "icon": "tags", - "description": "Words describing this material that do not appear in the subject terms above.", + "description": ( + "Words describing this material that do not appear in the " + "subject terms above." + ), }, } ], diff --git a/site/kcworks/metadata_fields/kcr_volumes_fields.py b/site/kcworks/metadata_fields/kcr_volumes_fields.py index e3cf00ead..eaac7b6b5 100644 --- a/site/kcworks/metadata_fields/kcr_volumes_fields.py +++ b/site/kcworks/metadata_fields/kcr_volumes_fields.py @@ -1,4 +1,5 @@ -""" +"""Volumes custom field. + kcr:volumes Information on the total number of volumes and the current volume identifier for multi-volume works. This value is an object with the keys "total_volumes" (for the total number of @@ -9,18 +10,9 @@ """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - BaseCF, - TextCF, - IntegerCF, -) -from marshmallow import fields, validate -from marshmallow_utils.fields import ( - SanitizedUnicode, - SanitizedHTML, - StrippedHTML, -) -from .kcr_metadata_fields import KCR_NAMESPACE +from invenio_records_resources.services.custom_fields import BaseCF +from marshmallow import fields +from marshmallow_utils.fields import SanitizedUnicode class VolumesCF(BaseCF): diff --git a/site/kcworks/metadata_fields/meeting_fields.py b/site/kcworks/metadata_fields/meeting_fields.py index c45332c98..8bae8f634 100644 --- a/site/kcworks/metadata_fields/meeting_fields.py +++ b/site/kcworks/metadata_fields/meeting_fields.py @@ -15,10 +15,8 @@ - meeting:meeting.session_part """ - from invenio_i18n import lazy_gettext as _ - KCR_MEETING_CUSTOM_FIELDS_UI = { "section": _("Conference"), "fields": [ diff --git a/site/kcworks/proxies.py b/site/kcworks/proxies.py index b8ae11fa3..62b6cf8ee 100644 --- a/site/kcworks/proxies.py +++ b/site/kcworks/proxies.py @@ -1,3 +1,14 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it under the +# terms of the MIT License; see LICENSE file for more details. + +"""Proxy definitions. + +Allow access to the current app's instance of services. +""" + from flask import current_app from werkzeug.local import LocalProxy diff --git a/site/kcworks/services/__init__.py b/site/kcworks/services/__init__.py index b20955801..abe9822ef 100644 --- a/site/kcworks/services/__init__.py +++ b/site/kcworks/services/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/accounts/api.py b/site/kcworks/services/accounts/api.py index eb02d8180..f2dee2982 100644 --- a/site/kcworks/services/accounts/api.py +++ b/site/kcworks/services/accounts/api.py @@ -1,7 +1,26 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Accounts API classes.""" + from typing import TypedDict class UserAPI(TypedDict): + """User API response for notifications.""" + email: str id: str username: str diff --git a/site/kcworks/services/accounts/saml.py b/site/kcworks/services/accounts/saml.py index e607f7aaa..93adad9c4 100644 --- a/site/kcworks/services/accounts/saml.py +++ b/site/kcworks/services/accounts/saml.py @@ -1,18 +1,31 @@ -from datetime import datetime, timezone -from flask import current_app, abort +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""SAML account handling.""" + +from datetime import UTC, datetime + +from flask import abort, current_app from flask_login import current_user from invenio_access.permissions import system_identity from invenio_accounts.models import User, UserIdentity from invenio_accounts.proxies import current_accounts from invenio_db import db from invenio_oauthclient.errors import AlreadyLinkedError -from invenio_oauthclient.utils import ( - create_csrf_disabled_registrationform, - fill_form, -) -from invenio_remote_user_data_kcworks.proxies import ( - current_remote_user_data_service, -) +from invenio_oauthclient.utils import create_csrf_disabled_registrationform, fill_form +from invenio_remote_user_data_kcworks.proxies import current_remote_user_data_service from invenio_saml.invenio_accounts.utils import ( _get_external_id, account_authenticate, @@ -22,7 +35,7 @@ from invenio_saml.invenio_app import get_safe_redirect_target -def knowledgeCommons_account_get_user(account_info=None): +def knowledgeCommons_account_get_user(account_info: dict | None = None) -> User | None: """Retrieve user object for the given request. Extends invenio_saml.invenio_accounts.utils.account_get_user to allow for @@ -31,12 +44,14 @@ def knowledgeCommons_account_get_user(account_info=None): Uses either the access token or extracted account information to retrieve the user object. - :param account_info: The dictionary with the account info. - (Default: ``None``) - :returns: A :class:`invenio_accounts.models.User` instance or ``None``. + Parameters: + account_info (dict | None): The dictionary with the account info. + (Default: ``None``) + + Returns: + A :class:`invenio_accounts.models.User` instance or ``None``. """ if account_info: - current_app.logger.debug(f"account_info: {account_info}") external_id = _get_external_id(account_info) if external_id: user = UserIdentity.get_user(external_id["method"], external_id["id"]) @@ -45,11 +60,9 @@ def knowledgeCommons_account_get_user(account_info=None): orcid = account_info.get("user", {}).get("profile", {}).get("identifier_orcid") if orcid: - current_app.logger.debug(f"orcid: {orcid}") orcid_match = User.query.filter( User._user_profile.op("->>")("identifier_orcid") == orcid ).one_or_none() - current_app.logger.debug(f"orcid_match: {orcid_match}") if orcid_match: return orcid_match kc_username = ( @@ -58,7 +71,6 @@ def knowledgeCommons_account_get_user(account_info=None): .get("identifier_kc_username") ) if kc_username: - current_app.logger.debug(f"kc_username: {kc_username}") kc_username_match = User.query.filter_by( username=f"{account_info['external_method']}-{kc_username}" ).one_or_none() @@ -71,7 +83,6 @@ def knowledgeCommons_account_get_user(account_info=None): return kc_username_match email = account_info.get("user", {}).get("email") if email: - current_app.logger.debug(f"email: {email}") email_match = User.query.filter_by(email=email).one_or_none() if email_match: return email_match @@ -88,10 +99,10 @@ def knowledgeCommons_account_setup(user: User, account_info: dict) -> bool: try: account_link_external_id( user, - dict( - id=account_info["external_id"], - method=account_info["external_method"], - ), + { + "id": account_info["external_id"], + "method": account_info["external_method"], + }, ) if not user.active: assert current_accounts.datastore.activate_user(user) @@ -155,46 +166,46 @@ def knowledgeCommons_account_info(attributes: dict, remote_app: str) -> dict: remote_data: dict = current_remote_user_data_service.fetch_from_remote_api( remote_app, external_id ) - print(f"Remote data: {remote_data}") orcid: str = remote_data.get("users", {}).get("orcid", None) - email: str = remote_data.get("users", {}).get("email", None) + email = remote_data.get("users", {}).get("email", None) assert email is not None - except KeyError: + except KeyError as err: raise ValueError( f"Missing required KC account username in SAML response from IDP: no " f"entity with key {mappings['external_id']}" - ) - except AssertionError: + ) from err + except AssertionError as err: raise ValueError( f"Missing required KC account email in SAML response from IDP: no " f"entity with key {mappings['email']} and fetch from KC api failed" - ) - - profile_dict = dict( - username=username, # shifted from profile to user by register form - full_name=name + " " + surname, - affiliations=affiliations, - identifier_kc_username=external_id.lower(), - ) + ) from err + + profile_dict = { + "username": username, # shifted from profile to user by register form + "full_name": name + " " + surname, + "affiliations": affiliations, + "identifier_kc_username": external_id.lower(), + } if orcid: profile_dict["identifier_orcid"] = orcid - return dict( - user=dict( - email=email, - profile=profile_dict, + return { + "user": { + "email": email, + "profile": profile_dict, + }, + "external_id": external_id, + "external_method": remote_app, + "active": True, + "confirmed_at": ( + datetime.now(UTC) if remote_app_config.get("auto_confirm", True) else None ), - external_id=external_id, - external_method=remote_app, - active=True, - confirmed_at=( - datetime.now(timezone.utc) - if remote_app_config.get("auto_confirm", True) - else None - ), - ) + } +# TODO: The change to the ACS handler is to allow for the custom user +# lookup logic has been accepted into invenio-saml upstream. Remove +# this custom logic once the change is available in a release we can use. def acs_handler_factory( remote_app, account_info=knowledgeCommons_account_info, @@ -251,23 +262,11 @@ def default_acs_handler(auth, next_url): :return: Next URL """ - current_app.logger.debug("ACS handler called") - current_app.logger.debug( - "Current user is authenticated: %s", current_user.is_authenticated - ) if not current_user.is_authenticated: - current_app.logger.debug( - "Metadata received from IdP %s", auth.get_attributes() - ) _account_info = account_info(auth.get_attributes(), remote_app) - current_app.logger.debug("Metadata extracted from IdP %s", _account_info) # TODO: signals? - current_app.logger.debug( - f"OAUTHCLIENT_SIGNUP_FORM: {current_app.config['OAUTHCLIENT_SIGNUP_FORM']}" - ) user = user_lookup(_account_info) - current_app.logger.debug(f"user: {user}") if user is None: form = create_csrf_disabled_registrationform(remote_app) diff --git a/site/kcworks/services/notifications/backends.py b/site/kcworks/services/notifications/backends.py index 7b0754a3c..53f4e5751 100644 --- a/site/kcworks/services/notifications/backends.py +++ b/site/kcworks/services/notifications/backends.py @@ -1,14 +1,31 @@ -from flask import current_app +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Notification backends.""" + from pathlib import Path -from invenio_mail.tasks import send_email -from invenio_notifications.backends.base import NotificationBackend -from marshmallow_utils.html import strip_html -from invenio_i18n import get_locale, force_locale -from invenio_i18n.proxies import current_i18n + import jinja2 +from flask import current_app from invenio_access.permissions import system_identity +from invenio_i18n import force_locale, get_locale +from invenio_i18n.proxies import current_i18n +from invenio_mail.tasks import send_email +from invenio_notifications.backends.base import NotificationBackend from kcworks.proxies import current_internal_notifications -from pprint import pformat +from marshmallow_utils.html import strip_html class CustomJinjaTemplateLoaderMixin: @@ -46,9 +63,10 @@ def render_template(self, notification, recipient): template = current_app.jinja_env.select_template( [ - # Backend-specific templates first, e.g notifications/email/comment_edit.jinja - f"{self.template_folder}/{self.id}/{notification.type}.{locale}.jinja", - f"{self.template_folder}/{self.id}/{notification.type}.jinja", + # Backend-specific templates first, e.g notifications/ + # email/comment_edit.jinja + f"{self.template_folder}/{self.id}/{notification.type}.{locale}.jinja", # type: ignore + f"{self.template_folder}/{self.id}/{notification.type}.jinja", # type: ignore # Default templates, e.g notifications/comment_edit.jinja f"{self.template_folder}/{notification.type}.{locale}.jinja", f"{self.template_folder}/{notification.type}.jinja", @@ -61,7 +79,8 @@ def render_template(self, notification, recipient): }, ) - # Forcing the locale of the recipient so the correct language is chosen for translatable strings + # Forcing the locale of the recipient so the correct language is chosen + # for translatable strings with force_locale(locale): # "Force" rendering the whole template (including global variables). # Since we render block by block afterwards, the context and variables @@ -69,16 +88,12 @@ def render_template(self, notification, recipient): list(template.root_render_func(ctx)) return { - block: "".join( - block_func(ctx) - ) # have to evaluate, as block_func is a generator + block: "".join(block_func(ctx)) # evaluate, block_func is a generator for block, block_func in template.blocks.items() } -class EmailNotificationBackend( - NotificationBackend, CustomJinjaTemplateLoaderMixin -): +class EmailNotificationBackend(NotificationBackend, CustomJinjaTemplateLoaderMixin): """Email specific notification backend.""" id = "email" @@ -93,8 +108,7 @@ def send(self, notification, recipient): "html": content["html_body"], "body": strip_html(content["plain_body"]), "recipients": [ - recipient.data.get("email") - or recipient.data.get("email_hidden") + recipient.data.get("email") or recipient.data.get("email_hidden") ], "sender": current_app.config["MAIL_DEFAULT_SENDER"], "reply_to": current_app.config["MAIL_DEFAULT_REPLY_TO"], @@ -111,7 +125,6 @@ class InternalNotificationBackend(NotificationBackend): def send(self, notification, recipient): """Send the notification message to the user's in-app notifications.""" - updated = current_internal_notifications.update_unread( identity=system_identity, user_id=recipient.data["id"], diff --git a/site/kcworks/services/notifications/builders.py b/site/kcworks/services/notifications/builders.py index e710b61c9..48978da24 100644 --- a/site/kcworks/services/notifications/builders.py +++ b/site/kcworks/services/notifications/builders.py @@ -1,71 +1,72 @@ -from flask import current_app +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Notification builders. + +# FIXME: Add internal handling for these notifications +# GrantUserAccessNotificationBuilder, +# GuestAccessRequestAcceptNotificationBuilder, +# GuestAccessRequestCancelNotificationBuilder, +# GuestAccessRequestDeclineNotificationBuilder, +# GuestAccessRequestSubmitNotificationBuilder, +# GuestAccessRequestSubmittedNotificationBuilder, +# GuestAccessRequestTokenCreateNotificationBuilder, +# UserAccessRequestAcceptNotificationBuilder, +# UserAccessRequestCancelNotificationBuilder, +# UserAccessRequestDeclineNotificationBuilder, +# UserAccessRequestSubmitNotificationBuilder, +""" + from invenio_accounts.models import User from invenio_communities.notifications.builders import ( - CommunityInvitationNotificationBuilder, CommunityInvitationAcceptNotificationBuilder, CommunityInvitationCancelNotificationBuilder, CommunityInvitationDeclineNotificationBuilder, CommunityInvitationExpireNotificationBuilder, + CommunityInvitationNotificationBuilder, CommunityInvitationSubmittedNotificationBuilder, ) -from invenio_communities.notifications.generators import ( - CommunityMembersRecipient, -) +from invenio_communities.notifications.generators import CommunityMembersRecipient from invenio_notifications.models import Notification -from invenio_notifications.registry import EntityResolverRegistry -from invenio_notifications.services.filters import KeyRecipientFilter from invenio_notifications.services.builders import NotificationBuilder -from invenio_notifications.services.generators import ( - EntityResolve, - # UserEmailBackend, -) -from kcworks.services.notifications.backends import ( - InternalNotificationBackend, - # EmailNotificationBackend, -) -from kcworks.services.notifications.generators import ( - CustomRequestParticipantsRecipient, - ModeratorRoleRecipient, -) from invenio_notifications.services.generators import RecipientBackendGenerator -from invenio_rdm_records.records.api import RDMDraft, RDMRecord from invenio_rdm_records.notifications.builders import ( CommunityInclusionAcceptNotificationBuilder, CommunityInclusionCancelNotificationBuilder, CommunityInclusionDeclineNotificationBuilder, CommunityInclusionExpireNotificationBuilder, CommunityInclusionSubmittedNotificationBuilder, - # FIXME: Add internal handling for these notifications - # GrantUserAccessNotificationBuilder, - # GuestAccessRequestAcceptNotificationBuilder, - # GuestAccessRequestCancelNotificationBuilder, - # GuestAccessRequestDeclineNotificationBuilder, - # GuestAccessRequestSubmitNotificationBuilder, - # GuestAccessRequestSubmittedNotificationBuilder, - # GuestAccessRequestTokenCreateNotificationBuilder, - # UserAccessRequestAcceptNotificationBuilder, - # UserAccessRequestCancelNotificationBuilder, - # UserAccessRequestDeclineNotificationBuilder, - # UserAccessRequestSubmitNotificationBuilder, ) +from invenio_rdm_records.records.api import RDMDraft, RDMRecord from invenio_requests.notifications.builders import ( CommentRequestEventCreateNotificationBuilder, ) - -# from invenio_requests.notifications.filters import ( -# UserRecipientFilter, -# ) -from invenio_users_resources.notifications.filters import ( - UserPreferencesRecipientFilter, -) from invenio_users_resources.notifications.generators import ( - UserRecipient, - # IfUserRecipient, EmailRecipient, IfEmailRecipient, + UserRecipient, ) from kcworks.services.accounts.api import UserAPI -from kcworks.services.notifications.backends import EmailNotificationBackend +from kcworks.services.notifications.backends import ( + EmailNotificationBackend, + InternalNotificationBackend, +) +from kcworks.services.notifications.generators import ( + CustomRequestParticipantsRecipient, + ModeratorRoleRecipient, +) class UserInternalBackend(RecipientBackendGenerator): @@ -93,12 +94,9 @@ class CustomCommunityInvitationNotificationBuilder( ): """Base notification builder for community invitation action.""" - recipient_backends = ( - CommunityInvitationNotificationBuilder.recipient_backends - + [ - UserInternalBackend(), - ] - ) + recipient_backends = CommunityInvitationNotificationBuilder.recipient_backends + [ + UserInternalBackend() + ] class CustomCommunityInvitationSubmittedNotificationBuilder( @@ -123,9 +121,7 @@ class CustomCommunityInvitationAcceptNotificationBuilder( type = "community-invitation.accept" recipients = [ - CommunityMembersRecipient( - key="request.created_by", roles=["owner", "manager"] - ), + CommunityMembersRecipient(key="request.created_by", roles=["owner", "manager"]), ] @@ -151,9 +147,7 @@ class CustomCommunityInvitationDeclineNotificationBuilder( type = "community-invitation.decline" recipients = [ - CommunityMembersRecipient( - key="request.created_by", roles=["owner", "manager"] - ), + CommunityMembersRecipient(key="request.created_by", roles=["owner", "manager"]), ] @@ -166,9 +160,7 @@ class CustomCommunityInvitationExpireNotificationBuilder( type = "community-invitation.expire" recipients = [ - CommunityMembersRecipient( - key="request.created_by", roles=["owner", "manager"] - ), + CommunityMembersRecipient(key="request.created_by", roles=["owner", "manager"]), UserRecipient(key="request.receiver"), ] @@ -176,6 +168,8 @@ class CustomCommunityInvitationExpireNotificationBuilder( class CustomCommunityInclusionAcceptNotificationBuilder( CommunityInclusionAcceptNotificationBuilder ): + """Notification builder for community inclusion accept action.""" + recipient_backends = ( CommunityInclusionAcceptNotificationBuilder.recipient_backends + [ @@ -187,6 +181,8 @@ class CustomCommunityInclusionAcceptNotificationBuilder( class CustomCommunityInclusionCancelNotificationBuilder( CommunityInclusionCancelNotificationBuilder ): + """Notification builder for community inclusion cancel action.""" + recipient_backends = ( CommunityInclusionCancelNotificationBuilder.recipient_backends + [ @@ -198,6 +194,7 @@ class CustomCommunityInclusionCancelNotificationBuilder( class CustomCommunityInclusionDeclineNotificationBuilder( CommunityInclusionDeclineNotificationBuilder ): + """Notification builder for community inclusion decline action.""" recipients = CommunityInclusionDeclineNotificationBuilder.recipients @@ -212,6 +209,8 @@ class CustomCommunityInclusionDeclineNotificationBuilder( class CustomCommunityInclusionExpireNotificationBuilder( CommunityInclusionExpireNotificationBuilder ): + """Notification builder for community inclusion expire action.""" + recipient_backends = ( CommunityInclusionExpireNotificationBuilder.recipient_backends + [ @@ -223,6 +222,8 @@ class CustomCommunityInclusionExpireNotificationBuilder( class CustomCommunityInclusionSubmittedNotificationBuilder( CommunityInclusionSubmittedNotificationBuilder ): + """Notification builder for community inclusion submitted action.""" + recipient_backends = ( CommunityInclusionSubmittedNotificationBuilder.recipient_backends + [ @@ -234,6 +235,8 @@ class CustomCommunityInclusionSubmittedNotificationBuilder( class CustomCommentRequestEventCreateNotificationBuilder( CommentRequestEventCreateNotificationBuilder ): + """Notification builder for comment request event create action.""" + recipients = ( CustomRequestParticipantsRecipient(key="request"), IfEmailRecipient( @@ -257,6 +260,7 @@ class CustomCommentRequestEventCreateNotificationBuilder( class FirstRecordCreatedNotificationBuilder(NotificationBuilder): + """Notification builder for first record created action.""" type = "user-first-record.create" @@ -319,6 +323,7 @@ def build(cls, data: dict, record: RDMDraft, sender: User): class FirstRecordPublishedNotificationBuilder(NotificationBuilder): + """Notification builder for first record published action.""" type = "user-first-record.publish" diff --git a/site/kcworks/services/notifications/generators.py b/site/kcworks/services/notifications/generators.py index 5fb563999..0cb64804a 100644 --- a/site/kcworks/services/notifications/generators.py +++ b/site/kcworks/services/notifications/generators.py @@ -1,22 +1,30 @@ -# -*- coding: utf-8 -*- +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research # -# Copyright (C) 2023 Graz University of Technology. +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. # -# Invenio-Requests is free software; you can redistribute it and/or modify -# it under the terms of the MIT License; see LICENSE file for more details. +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. -"""Notification generators.""" +"""Notification Need generators.""" from flask import current_app from invenio_access.permissions import system_identity +from invenio_accounts.proxies import current_accounts from invenio_notifications.models import Recipient from invenio_notifications.services.generators import RecipientGenerator -from invenio_requests.proxies import current_events_service from invenio_records.dictutils import dict_lookup from invenio_records_resources.services.errors import PermissionDeniedError +from invenio_requests.proxies import current_events_service from invenio_search.engine import dsl from invenio_users_resources.proxies import current_users_service -from invenio_accounts.proxies import current_accounts class RoleRecipient(RecipientGenerator): @@ -28,7 +36,6 @@ def __init__(self, key): def __call__(self, notification, recipients: dict): """Fetch users with a specified role and add as recipients.""" - user_ids = set() role = current_accounts.datastore.find_role(self.key) @@ -46,9 +53,7 @@ def __call__(self, notification, recipients: dict): for uid in [u for u in user_ids if u != "system"]: try: users.append( - current_users_service.read( - system_identity, id_=uid - ).to_dict() + current_users_service.read(system_identity, id_=uid).to_dict() ) except PermissionDeniedError as e: current_app.logger.warning(f"Error fetching user {uid}: {e}") @@ -68,7 +73,6 @@ class ModeratorRoleRecipient(RecipientGenerator): def __call__(self, notification, recipients: dict): """Fetch users with a specified role and add as recipients.""" - user_ids = set() rolename = current_app.config.get( @@ -89,9 +93,7 @@ def __call__(self, notification, recipients: dict): for uid in [u for u in user_ids if u != "system"]: try: users.append( - current_users_service.read( - system_identity, id_=uid - ).to_dict() + current_users_service.read(system_identity, id_=uid).to_dict() ) except PermissionDeniedError as e: current_app.logger.warning(f"Error fetching user {uid}: {e}") @@ -128,7 +130,6 @@ def _get_user_id(self, request_field): def __call__(self, notification, recipients: dict): """Fetch users involved in request and add as recipients.""" request = dict_lookup(notification.context, self.key) - from flask import current_app # checking if entities are users. If not, we will not add them. # TODO: add support for other entities? (e.g. groups) @@ -168,9 +169,7 @@ def __call__(self, notification, recipients: dict): for uid in [u for u in user_ids if u != "system"]: try: users.append( - current_users_service.read( - system_identity, id_=uid - ).to_dict() + current_users_service.read(system_identity, id_=uid).to_dict() ) except PermissionDeniedError as e: current_app.logger.warning(f"Error fetching user {uid}: {e}") diff --git a/site/kcworks/services/notifications/permissions.py b/site/kcworks/services/notifications/permissions.py index 9c5e6e384..e7b0edded 100644 --- a/site/kcworks/services/notifications/permissions.py +++ b/site/kcworks/services/notifications/permissions.py @@ -1,9 +1,23 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Permission policies for notifications.""" + from flask_principal import UserNeed from invenio_records_permissions import BasePermissionPolicy -from invenio_records_permissions.generators import ( - SystemProcess, -) -from invenio_records_permissions.generators import Generator +from invenio_records_permissions.generators import Generator, SystemProcess class SpecificUser(Generator): diff --git a/site/kcworks/services/notifications/service.py b/site/kcworks/services/notifications/service.py index 3ffbce786..d6a03dae6 100644 --- a/site/kcworks/services/notifications/service.py +++ b/site/kcworks/services/notifications/service.py @@ -1,21 +1,37 @@ -from flask import current_app as app +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Service for managing internal notifications.""" + +import json +from typing import Any, TypedDict, cast + from flask_principal import Identity from invenio_accounts.models import User from invenio_accounts.proxies import current_accounts from invenio_notifications.models import Notification from invenio_records_resources.services import Service, ServiceConfig # noqa -from invenio_records_resources.services.base.config import ( - ConfiguratorMixin, -) # noqa -import json +from invenio_records_resources.services.base.config import ConfiguratorMixin from kcworks.services.notifications.permissions import ( InternalNotificationPermissionPolicy, ) -from pprint import pformat -from typing import Optional, TypedDict class UnreadNotification(TypedDict): + """Unread notification data structure.""" + request_id: str notification_type: str request_type: str @@ -72,7 +88,7 @@ def _prepare_unread_list( the list, the comment ID is added to the list of unread comments for that request. - Args: + Parameters: notification (Notification): The notification object provided by the notification builder. user (User): The user object for whom the notification is intended. @@ -87,11 +103,15 @@ def _prepare_unread_list( - unread_comments: A list of IDs of the unread comments for the request. """ - unread = json.loads( - user.user_profile.get("unread_notifications", "[]") - ) + unread = json.loads(user.user_profile.get("unread_notifications", "[]")) unread = [ - UnreadNotification(**n) + UnreadNotification( + request_id=n.get("request_id", ""), + notification_type=n.get("notification_type", ""), + request_type=n.get("request_type", ""), + request_status=n.get("request_status", ""), + unread_comments=n.get("unread_comments", []), + ) for n in unread if isinstance(n, dict) and n.get("request_id") ] # Filter out non-dict items in case of a bad update @@ -100,14 +120,10 @@ def _prepare_unread_list( request_type = notification.context.get("request", {}).get("type") request_status = notification.context.get("request", {}).get("status") request_creator_id = ( - notification.context.get("request", {}) - .get("created_by", {}) - .get("id") + notification.context.get("request", {}).get("created_by", {}).get("id") ) request_receiver_id = ( - notification.context.get("request", {}) - .get("receiver", {}) - .get("id") + notification.context.get("request", {}).get("receiver", {}).get("id") ) # FIXME: For the time being, we don't notify collection curators @@ -121,25 +137,25 @@ def _prepare_unread_list( "community-inclusion.create", "community-inclusion.cancel", ] and str(request_creator_id) != str(user.id): - return unread + return cast(list[UnreadNotification], unread) elif notification_type in [ "community-invitation.accept", "community-invitation.decline", "community-invitation.expire", ] and str(request_receiver_id) != str(user.id): - return unread + return cast(list[UnreadNotification], unread) elif ( notification_type == "comment-request-event.create" and request_type in ["community-submission", "community-inclusion"] and str(request_creator_id) != str(user.id) ): - return unread + return cast(list[UnreadNotification], unread) elif ( notification_type == "comment-request-event.create" and request_type == "community-invitation" and str(request_receiver_id) != str(user.id) ): - return unread + return cast(list[UnreadNotification], unread) existing_request = None for index, item in enumerate(unread): @@ -152,12 +168,8 @@ def _prepare_unread_list( existing_request["request_type"] = request_type existing_request["request_status"] = request_status if notification_type == "comment-request-event.create": - comment_id = notification.context.get("request_event", {}).get( - "id" - ) - existing_request.setdefault("unread_comments", []).append( - comment_id - ) + comment_id = notification.context.get("request_event", {}).get("id") + existing_request.setdefault("unread_comments", []).append(comment_id) unread.append(existing_request) else: new_item = UnreadNotification( @@ -168,25 +180,22 @@ def _prepare_unread_list( unread_comments=[], ) if notification_type == "comment-request-event.create": - comment_id = notification.context.get("request_event", {}).get( - "id" - ) + comment_id = notification.context.get("request_event", {}).get("id") new_item["unread_comments"].append(comment_id) unread.append(new_item) - return unread + return cast(list[UnreadNotification], unread) - def read_unread( - self, identity: Identity, user_id: int - ) -> list[UnreadNotification]: - """ - Read the unread notifications for a user. + def read_unread(self, identity: Identity, user_id: int) -> list[UnreadNotification]: + """Read the unread notifications for a user. - :param identity: The identity of the user performing the action. - :param user_id: The ID of the user whose unread notifications are to be + Parameters: + identity (Identity): The identity of the user performing the action. + user_id (int): The ID of the user whose unread notifications are to be read. - :returns: The user object. + Returns: + The user object. """ self.require_permission(identity, "read_unread", user_id=user_id) @@ -196,46 +205,54 @@ def read_unread( user.user_profile.get("unread_notifications") ) unread_notifications = [ - UnreadNotification(**n) + UnreadNotification( + request_id=n.get("request_id", ""), + notification_type=n.get("notification_type", ""), + request_type=n.get("request_type", ""), + request_status=n.get("request_status", ""), + unread_comments=n.get("unread_comments", []), + ) for n in unread_notifications if isinstance(n, dict) and n.get("request_id") ] # Filter out non-dict items in case of a bad update except TypeError: # because the field is not set unread_notifications = [] - return unread_notifications + return cast(list[UnreadNotification], unread_notifications) def clear_unread( self, identity: Identity, user_id: int, - request_id: Optional[str] = None, - comment_id: Optional[str] = None, + request_id: str | None = None, + comment_id: str | None = None, ) -> list[UnreadNotification]: - """ - Clear the unread notifications for a user. + """Clear the unread notifications for a user. - :param identity: The identity of the user performing the action. - :param user_id: The ID of the user whose unread notifications are to be + Parameters: + identity (Identity): The identity of the user performing the action. + user_id (int): The ID of the user whose unread notifications are to be cleared. - :param request_id: The ID of the request to be cleared. If not + request_id (str | None): The ID of the request to be cleared. If not provided, unread notifications for all requests for the user will be cleared. - :param comment_id: The ID of the comment to be cleared. This parameter - is only considered if the request_id parameter is - provided. If so, the comment is removed from the - list of unread comments for the request. If the - comment is the only unread comment for the request, + comment_id (str | None): The ID of the comment to be cleared. This + parameter is only considered if the request_id + parameter is provided. If so, the comment is removed + from the list of unread comments for the request. If + the comment is the only unread comment for the request, the entire request object is removed from the list of unread requests. - :raises PermissionDeniedError: If the identity is not the system + Raises: + PermissionDeniedError: If the identity is not the system identity or the identity of the user whose notifications are being modified. - :raises ValueError: If the comment_id parameter is provided without the + ValueError: If the comment_id parameter is provided without the request_id parameter. - :returns: The updated list of unread notifications as a JSON string. - (The format it takes in the user profile record.) + Returns: + The updated list of unread notifications as a JSON string. + (The format it takes in the user profile record.) """ self.require_permission(identity, "clear_unread", user_id=user_id) @@ -243,18 +260,20 @@ def clear_unread( profile = user.user_profile unread = json.loads(profile.get("unread_notifications", "[]")) unread = [ - UnreadNotification(**n) + UnreadNotification( + request_id=n.get("request_id", ""), + notification_type=n.get("notification_type", ""), + request_type=n.get("request_type", ""), + request_status=n.get("request_status", ""), + unread_comments=n.get("unread_comments", []), + ) for n in unread if isinstance(n, dict) and n.get("request_id") ] # Filter out non-dict items in case of a bad update if comment_id and not request_id: - raise ValueError( - "Request ID is required when providing a comment ID." - ) + raise ValueError("Request ID is required when providing a comment ID.") elif request_id: - request_objects = [ - n for n in unread if n["request_id"] == request_id - ] + request_objects = [n for n in unread if n["request_id"] == request_id] request_object = request_objects[0] if request_objects else None rest = [n for n in unread if n["request_id"] != request_id] if comment_id: @@ -273,21 +292,22 @@ def clear_unread( user.user_profile = profile current_accounts.datastore.commit() - return unread + return cast(list[UnreadNotification], unread) def update_unread( self, identity: Identity, user_id: int, notification: Notification - ) -> list[dict]: - """ - Update the unread notifications for a user. + ) -> list[dict[str, Any]]: + """Update the unread notifications for a user. - :param identity: The identity of the user performing the action. - :param user_id: The ID of the user whose unread notifications are to be + Parameters: + identity (Identity): The identity of the user performing the action. + user_id (int): The ID of the user whose unread notifications are to be updated. - :param notification: The notification to be added to the unread + notification (Notification): The notification to be added to the unread notifications list. - :returns: The updated user object. + Returns: + The updated user object. """ self.require_permission(identity, "update_unread", user_id=user_id) @@ -298,4 +318,7 @@ def update_unread( user.user_profile = profile current_accounts.datastore.commit() - return json.loads(user.user_profile.get("unread_notifications")) + return cast( + list[dict[str, Any]], + json.loads(user.user_profile.get("unread_notifications")), + ) diff --git a/site/kcworks/services/records/components/first_record_component.py b/site/kcworks/services/records/components/first_record_component.py index 44001a452..5a984f846 100644 --- a/site/kcworks/services/records/components/first_record_component.py +++ b/site/kcworks/services/records/components/first_record_component.py @@ -1,12 +1,27 @@ -from flask import current_app +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Service component for handling first record creation or publication.""" + +from flask_principal import Identity from invenio_access.permissions import system_identity -from invenio_accounts.proxies import current_accounts -from invenio_rdm_records.proxies import current_rdm_records_service -from invenio_rdm_records.records.api import RDMDraft, RDMRecord from invenio_drafts_resources.services.records.components import ( ServiceComponent, ) from invenio_notifications.services.uow import NotificationOp +from invenio_rdm_records.proxies import current_rdm_records_service +from invenio_rdm_records.records.api import RDMDraft, RDMRecord from kcworks.services.notifications.builders import ( FirstRecordCreatedNotificationBuilder, FirstRecordPublishedNotificationBuilder, @@ -14,14 +29,19 @@ class FirstRecordComponent(ServiceComponent): + """Service component for handling first record creation or publication.""" - def create(self, identity, data: dict, record: RDMDraft, **kwargs): - """ - Check if the user has created a record or draft before. If not, emit - a notification. + def create(self, identity: Identity, data: dict, record: RDMDraft, **kwargs): + """Notify if a user hasn't created a record or draft before. + + Args: + identity (Identity): The identity of the user. + data (dict): The data of the record. + record (RDMDraft): The record. + **kwargs: Additional keyword arguments. """ try: - user = identity.user + user = identity.user # type: ignore prior_records = current_rdm_records_service.search( system_identity, q=f'+parent.access.owned_by.user:"{user.id}"', @@ -43,19 +63,20 @@ def create(self, identity, data: dict, record: RDMDraft, **kwargs): except AttributeError: # if identity is system_identity pass - def publish(self, identity, draft: RDMDraft, record: RDMRecord, **kwargs): - """ - Check if the user has published a record before. If not, emit a - notification. + def publish(self, identity: Identity, draft: RDMDraft, record: RDMRecord, **kwargs): + """Notify if a user hasn't published a record before. + + Args: + identity (Identity): The identity of the user. + draft (RDMDraft): The draft. + record (RDMRecord): The record. + **kwargs: Additional keyword arguments. """ try: - user = identity.user + user = identity.user # type: ignore prior_records = current_rdm_records_service.search( system_identity, - q=( - f'+parent.access.owned_by.user:"{user.id}" ' - '+is_published:"true"' - ), + q=(f'+parent.access.owned_by.user:"{user.id}" +is_published:"true"'), ) if prior_records.total == 0: self.uow.register( diff --git a/site/kcworks/services/records/components/per_field_permissions_component.py b/site/kcworks/services/records/components/per_field_permissions_component.py new file mode 100644 index 000000000..f5121bd3c --- /dev/null +++ b/site/kcworks/services/records/components/per_field_permissions_component.py @@ -0,0 +1,386 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Service component for applying per-field editing permissions to records.""" + +import re + +from flask import current_app +from flask_principal import Identity +from invenio_access.permissions import system_identity +from invenio_administration.generators import Administration +from invenio_communities.records.records.systemfields.communities.manager import ( + CommunitiesRelationManager, +) +from invenio_rdm_records.proxies import current_rdm_records_service as record_service +from invenio_rdm_records.records.api import RDMDraft, RDMRecord +from invenio_record_importer_kcworks.utils.utils import replace_value_in_nested_dict +from invenio_records_permissions.generators import SystemProcess +from invenio_records_resources.services.records.components.base import ServiceComponent +from kcworks.services.records.permissions import per_field_edit_permission_factory +from kcworks.utils import ( + get_changed_fields, + get_value_by_path, + matching_list_parts_skip_digits, +) + + +class PerFieldEditPermissionsComponent(ServiceComponent): + """A service component that applies per-field permissions to records. + + Intended for use with the RDMRecordsService. + """ + + @staticmethod + def get_permissions_config( + parent_communities: CommunitiesRelationManager, + ) -> dict: + """Get the configuration for a community. + + If the record has a parent, get the configuration for the community. + + Parameters: + parent_communities (dict): The communities of the record's parent. + + Returns: + dict: The per-field permissions configuration dictionary for the + community if there is one. Otherwise, returns an empty dictionary. + """ + default_editors_fallback = ["manager", "owner", "curator"] + community_config = {} + community_configs = current_app.config.get( + "RDM_RECORDS_PERMISSIONS_PER_FIELD", {} + ) + if community_configs and parent_communities: + if parent_communities.default: # type: ignore + community_config = community_configs.get( + parent_communities.default.slug # type: ignore + ) + + if not community_config: + community_config = community_configs.get("default", {}) + default_editors_fallback = [Administration, SystemProcess] + + if community_config: + policy = community_config.get("policy", {}) + if isinstance(policy, list): + default_editors = community_config.get( + "default_editors", default_editors_fallback + ) + policy = dict.fromkeys(policy, default_editors) + community_config["policy"] = policy + + return community_config + + @staticmethod + def _check_field_condition( + published_data: dict, + path: str, + condition: str, + ) -> bool: + result = True + + if condition and "=" in condition: + subfield, value = condition.split("=") + full_check_path = path + "|" + subfield + actual_value = get_value_by_path( + published_data, full_check_path, separator="|" + ) + if str(actual_value) != value: + result = False + elif condition: + # Handle direct value condition (e.g., "neh") + actual_value = get_value_by_path(published_data, path, separator="|") + if str(actual_value) != condition: + result = False + + return result + + @staticmethod + def _separate_conditional_fields( + restricted_fields: list[str], + ) -> tuple[list[str], list[tuple[str, str, str]]]: + """Separate the fields with bracketed conditions from those without. + + Returns a tuple of two lists: the first is a list of path strings without + bracketed conditions, and the second is a list of tuples, each containing + the base part of the path, the conditions, and the full restricted path. + """ + restricted_fields_with_conditions = [] + simple_restricted_fields = [] + for restricted_field in restricted_fields: + bracket_section_match = re.match(r"^(.*?)(?:\[(.*?)\])", restricted_field) + if bracket_section_match: + base_part, conditions = bracket_section_match.groups() + restricted_fields_with_conditions.append( + (base_part, conditions, restricted_field) + ) + else: + simple_restricted_fields.append(restricted_field) + return simple_restricted_fields, restricted_fields_with_conditions + + @staticmethod + def _fields_match( + changed_field: str, + restricted_field: str, + matched_parts: list[str] | None = None, + ) -> bool: + """Check if the changed field matches the restricted field. + + Returns True if the fields match, False otherwise. + """ + if not matched_parts: + matched_parts = matching_list_parts_skip_digits( + changed_field.split("|"), restricted_field.split("|") + ) + return ( + changed_field.startswith(restricted_field + "|") + or changed_field == restricted_field + or matched_parts != [] + ) + + @staticmethod + def _find_changed_restricted_fields( + published_data: dict, new_data: dict, community_config: dict + ) -> list[tuple[str, str]]: + """Find the changed restricted fields. + + Returns a list of field paths for values that have been changed and are + restricted in the per-field permissions configuration. + + Args: + published_data (dict): The data of the previous published version of the + record. + new_data (dict): The data of the new draft version of the record. + community_config (dict): The per-field permissions configuration for the + community. + + Returns: + list[tuple[str, str]]: A list of tuples, each containing a field path that + has changed and the restricted field path that matches it. If no restricted + fields are found, or no changes appear in restricted fields, returns an + empty list. + + Note: + Expects the restricted fields to be in the format "metadata|funding" with + either a bar or a dot as the delimiter. Returned fields will always use + a bar as the delimiter. + + With list fields, any member of the list is restricted if no specific index + is given (e.g., "metadata|funding"). If a specific index is given, only that + index is restricted (e.g., "metadata|funding|0") and other indices are not + restricted. This is to allow for the possibility of restricting specific + members of a list field while allowing other members to be edited. + + If square brackets are placed following the final field name, the value + inside the brackets is used to determine whether the field is restricted, + based on the starting value of the field. If a simple value is provided, + without an equals sign, the field will be restricted if the starting value + matches the starting value for the field. For example, + "metadata|funding|funder[neh]" would match "metadata|funding|0|funder" + *only* if the starting value of "metadata|funding|0|funder" is "neh". + + If the square brackets contain an equals sign, the field will be restricted + based on the value of a subfield. For example, + "metadata|funding[funder|id=neh]" would match any field path for + "metadata|funding" ("metadata|funding|0|funder", "metadata|funding|1|award", + "metadata|funding", etc.) but will match *only* if the starting value of + "metadata|funding|0|funder|id" is "neh". + + Examples: + When "metadata|funding" is restricted: + - Will match "metadata|funding" + - Will match "metadata|funding|0|funder" + - Will match "metadata|funding|1|funder" + + When "metadata|funding|0" is restricted: + - Will match "metadata|funding|0" + - Will match "metadata|funding|0|funder" + - Will NOT match "metadata|funding|1|funder" + + When "metadata|funding|funder" is restricted: + - Will match "metadata|funding|0|funder" + - Will match "metadata|funding|1|funder" + - Will NOT match "metadata|funding|0|award" + + When "metadata|funding|funder|id[neh]" is restricted: + - Will match "metadata|funding|0|funder" *only* if the starting value of + "metadata|funding|0|funder" is "neh" + - Will NOT match "metadata|funding|0|award" + + When "metadata|funding[funder|id=neh]" is restricted: + - Will match "metadata|funding" ONLY if the starting value of + "metadata|funding|0|funder|id" is "neh" + - Will NOT match "metadata|funding|1|funder" if the starting value of + "metadata|funding|1|funder|id" is "neh" + - Will match "metadata|funding|0|award" if the starting value of + "metadata|funding|0|funder|id" is "neh" + """ + restricted_fields = [ + k.replace(".", "|") for k in community_config.get("policy", {}).keys() + ] + changed_fields = get_changed_fields(published_data, new_data, separator="|") + + simple_restricted_fields, restricted_fields_with_conditions = ( + PerFieldEditPermissionsComponent._separate_conditional_fields( + restricted_fields + ) + ) + + changed_restricted_fields = [] + for changed_field in changed_fields: + # For each changed field, check if it matches any restricted field pattern + for restricted_field in simple_restricted_fields: + if PerFieldEditPermissionsComponent._fields_match( + changed_field, restricted_field + ): + changed_restricted_fields.append((changed_field, restricted_field)) + continue + + for ( + base_part, + condition, + restricted_field, + ) in restricted_fields_with_conditions: + changed_field_parts = changed_field.split("|") + matched_parts = matching_list_parts_skip_digits( + changed_field_parts, base_part.split("|") + ) + + # Account for the situation where the endpoint of the matched parts + # is a list field, but the restricted field provided no digit index. + if ( + len(changed_field_parts) > len(matched_parts) + and changed_field_parts[len(matched_parts)].isdigit() + ): + matched_parts.append(changed_field_parts[len(matched_parts)]) + + if PerFieldEditPermissionsComponent._fields_match( + changed_field, base_part, matched_parts=matched_parts + ): + if PerFieldEditPermissionsComponent._check_field_condition( + published_data, "|".join(matched_parts), condition + ): + changed_restricted_fields.append( + (changed_field, restricted_field) + ) + continue + + return changed_restricted_fields + + def update_draft( + self, + identity: Identity, + data: dict, + record: RDMDraft, + errors: list, + **kwargs, + ) -> None: + """Apply per-field permissions to a draft of a record. + + Check for per-field permissions in the community configuration and apply + them to the fields that are restricted in the community configuration. + + If the permission policy is not satisfied, does not raise a ValidationError but + instead reverts the restricted fields to the previous values and adds an error + to the errors list. + + Args: + identity (Identity): The identity performing the update. + data (dict): The data to update the record with (complete record data, not + just new values). + record (RDMDraft): The draft being updated. + errors (list): The list of errors to add to. + **kwargs: Additional keyword arguments. + """ + changed_restricted_fields = [] + current_app.logger.debug("Updating draft") + + # only apply if there is a previous published version + if (record.is_published or record.versions.index > 1) and record.parent: + community_config: ( + dict | None + ) = PerFieldEditPermissionsComponent.get_permissions_config( + record.parent.communities # type: ignore + ) + + if community_config: + # have to get the previous published version to compare against, + # since the draft may already have been updated with the new values + + # previous_published_version_rec = self.service.record_cls.get_record( + # record.versions.latest_id + # ) + record_communities = record.parent.communities # type: ignore + previous_published_version_rec = ( + RDMRecord.get_latest_published_by_parent(record.parent) + ) + previous_published_version = record_service.read( + system_identity, + id_=previous_published_version_rec.pid.pid_value, # type: ignore + ) + previous_published_data = { + k: v + for k, v in previous_published_version.to_dict().items() + if k in ["access", "metadata", "custom_fields", "pids"] + } + changed_restricted_fields = ( + PerFieldEditPermissionsComponent._find_changed_restricted_fields( + previous_published_data, data, community_config + ) + ) + + for field, key in changed_restricted_fields: + current_app.logger.debug(f"Checking field: {field} with key: {key}") + policy: dict | list = community_config.get("policy", []) + if isinstance(policy, dict): + roles: list = policy.get(key, []) or policy.get( + key.replace("|", "."), [] + ) + else: + roles = policy + community_field_policy = per_field_edit_permission_factory( + community_id=record_communities.default.id, # type: ignore + roles=roles, + ) + if not community_field_policy.allows(identity): + current_app.logger.debug(f"Field {field} is restricted") + new_error = { + # frontend needs dot notation + "field": field.replace("|", "."), + "messages": [ + "You do not have permission to edit this field " + "because the record is included in the " + f"{record_communities.default.slug}" + " community. " + "Please contact the community owner or manager " + "for assistance." + ], + } + errors.append(new_error) + # raise ValidationError( + # field_name=field, message=new_error["messages"][0] + # ) + old_value = get_value_by_path( + previous_published_data, field, separator="|" + ) + replace_value_in_nested_dict(data, field, old_value) + record.metadata = data["metadata"] + if "custom_fields" in data.keys(): + record.custom_fields = data["custom_fields"] + if "access" in data.keys(): + record.access = data["access"] + if "pids" in data.keys(): + record.pids = data["pids"] diff --git a/site/kcworks/services/records/permissions.py b/site/kcworks/services/records/permissions.py new file mode 100644 index 000000000..e7c177388 --- /dev/null +++ b/site/kcworks/services/records/permissions.py @@ -0,0 +1,116 @@ +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Permission policies for record permissions.""" + +from collections.abc import Sequence +from functools import reduce + +from flask_principal import Need +from invenio_access.permissions import Permission, system_identity +from invenio_administration.generators import Administration +from invenio_communities.generators import ( + CommunityCurators, + CommunityManagers, + CommunityMembers, + CommunityOwners, +) +from invenio_communities.proxies import current_communities +from invenio_records_permissions.generators import Generator, SystemProcess + +community_role_generators = { + "reader": CommunityMembers, + "curator": CommunityCurators, + "manager": CommunityManagers, + "owner": CommunityOwners, +} + + +def per_field_edit_permission_factory( + community_id: str | None, roles: Sequence[str | Generator | type] +) -> Permission: + """Create a permission policy for a specific community's restricted fields. + + Creates a permission policy for editing restricted fields. The policy + furnishes just one action: "edit_restricted_field". + + Args: + community_id: The ID of the community to create the permission policy for. + roles: A list of roles to create the permission policy for. + + Note: + If the community ID is not provided or is "default", the system default policy + will be returned. This allows only system process and admins. + + If the provided `roles` list is a list of strings, the roles will be + converted to the corresponding built-in generators. If the list is a + list of invenio_records_permissions.generators.Generator objects, the + generators will be used directly. If the list is empty, the default + policy will be returned. + + If a community ID is provided, but the `roles` list is empty, the policy + will be a default community policy that allows owners, managers, and + curators to edit restricted fields. + + Returns: + A permission policy for the community's restricted fields. + """ + role_generators = [ # Default even if no community ID or roles + SystemProcess, + Administration, + ] + community_record = None + + try: + # Handle roles first + if roles: + if isinstance(list(roles)[0], str): + try: + assert all(r in community_role_generators.keys() for r in roles) + except AssertionError as e: + raise PermissionError( + f"Invalid roles: {roles}. Valid roles " + f"are: {community_role_generators.keys()}" + ) from e + role_generators.extend( + [g for r, g in community_role_generators.items() if r in roles] + ) + else: + role_generators.extend(roles) + + # Handle community ID + if community_id and community_id != "default": + community = current_communities.service.read(system_identity, community_id) + community_record = community._record + community_id = community.id + if not roles: # Default policy if there's a community ID but no roles + role_generators.extend( + [ + g + for r, g in community_role_generators.items() + if r not in ["reader", "curator"] + ], + ) + + generated_needs: list[Need] = reduce( + lambda acc, g: acc + + g().needs(record=community_record, community_id=community_id), + role_generators, + [], + ) + except (KeyError, TypeError, AssertionError) as e: + msg = "Error generating needs for per-field edit permission" + raise PermissionError(msg) from e + policy = Permission(*generated_needs) + return policy diff --git a/site/kcworks/services/records/record_communities/community_change_permissions_component.py b/site/kcworks/services/records/record_communities/community_change_permissions_component.py new file mode 100644 index 000000000..b13657299 --- /dev/null +++ b/site/kcworks/services/records/record_communities/community_change_permissions_component.py @@ -0,0 +1,211 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Service component allowing fine-grained control of changing record communities.""" + +from typing import Any + +from flask_principal import Identity +from invenio_access.permissions import system_identity +from invenio_communities.errors import SetDefaultCommunityError +from invenio_rdm_records.proxies import current_rdm_records_service +from invenio_rdm_records.records.api import RDMRecord +from invenio_records_resources.services.errors import PermissionDeniedError +from invenio_records_resources.services.records.components.base import ServiceComponent +from invenio_records_resources.services.uow import UnitOfWork +from kcworks.services.records.components.per_field_permissions_component import ( + PerFieldEditPermissionsComponent, +) +from kcworks.services.records.permissions import per_field_edit_permission_factory + + +class CommunityChangePermissionsComponent(ServiceComponent): + """Service component that prevents unauthorized changes to a record's communities. + + Intended for use with the RecordCommunitiesService from invenio-rdm-records. + """ + + def _check_default_community_permission( + self, + identity: Identity, + record: RDMRecord, + action: str, + old_record: RDMRecord | None = None, + ) -> bool: + """Check if the identity has permission to modify the default community. + + Parameters: + identity (Any): The identity to check permissions for + record (RDMRecord): The record containing the default community + action (str): The action being performed ("remove" or "change") + old_record (RDMRecord | None, optional): The previous version of the record + to check permissions for. Defaults to None. + + Returns: + bool: True if the identity has permission, False otherwise + + Raises: + PermissionDeniedError: If the identity doesn't have permission + SetDefaultCommunityError: If the identity doesn't have permission to change + the default community + """ + if not ( + record.parent + and record.parent.communities # type: ignore + and record.parent.communities.default # type: ignore + ): + return True + + communities = ( + old_record.parent.communities # type: ignore + if old_record + else record.parent.communities # type: ignore + ) + + # Get the permissions configuration for the community + community_config = PerFieldEditPermissionsComponent.get_permissions_config( + communities + ) + + # Check if the field is restricted + policy = community_config.get("policy", {}) + # If the field is restricted, check permissions + if "parent.communities.default" in policy.keys(): + community_field_policy = per_field_edit_permission_factory( + community_id=communities.default.id, # type: ignore + roles=policy["parent.communities.default"], + ) + if not community_field_policy.allows(identity): + raise PermissionDeniedError( + f"You do not have permission to {action} this default community. " + f"Please contact the community owner or manager for assistance." + ) + return True + + def remove( + self, + identity: Identity, + record: RDMRecord, + communities: list[dict[str, Any]], + errors: list[dict[str, Any]], + uow: UnitOfWork | None = None, + **kwargs: Any, + ) -> None: + """Prevent unauthorized removal of the default community from a record. + + If the permissions are not granted, the default community is not removed. + An error is added to the errors list for the service operation. + + Parameters: + identity (Any): The identity performing the action + _id (str): The record ID + data (dict[str, Any]): The data containing the communities to remove + errors (list[dict[str, Any]]): The errors to add to + uow (UnitOfWork | None, optional): The unit of work manager. Defaults + to None. + **kwargs (Any): Additional keyword arguments + """ + communities_to_remove = [c["id"] for c in communities] + if ( + record.parent + and record.parent.communities # type: ignore + and record.parent.communities.default # type: ignore + ): + default_community = record.parent.communities.default # type: ignore + default_community_title = ( + default_community.metadata.get("title", "") or default_community.slug + ) + if str(default_community.id) in communities_to_remove: + try: + self._check_default_community_permission(identity, record, "remove") + except PermissionDeniedError: + communities.remove( + next( + c + for c in communities + if c["id"] == str(default_community.id) + ) + ) + errors.append( + { + "field": "parent.communities.default", + "message": ( + "You do not have permission to remove this work from " + f"{default_community_title}. " + "Please contact the collection" + " owner or manager for assistance." + ), + } + ) + + def set_default( + self, + identity: Identity, + record: RDMRecord, + default_community_id: str | None, + valid_data: dict[str, Any], + uow: UnitOfWork | None = None, + **kwargs: Any, + ) -> None: + """Prevent unauthorized changes to the default community. + + If the permissions are not granted, the default community is not changed. + An error is raised. + + Note: This component is limited to raising the handled errors in the + configuration for the RDMRecordCommunitiesResource if we want the error + to be passed to the client. + + Parameters: + identity (Any): The identity performing the action + record (RDMRecord): The record containing the default community + default_community_id (str | None): The new default community ID + valid_data (dict[str, Any]): The data containing the new default community + uow (UnitOfWork | None, optional): The unit of work manager. Defaults + to None. + **kwargs (Any): Additional keyword arguments + + Raises: + SetDefaultCommunityError: If the identity doesn't have permission to change + the default community + """ + if record.is_published: + published_version_rec = RDMRecord.get_latest_published_by_parent( + record.parent + ) + # NOTE: This is a hack to get the previous version of the record + # via the search engine which has not yet been updated + # with changes made during the current service operation. + published_version = current_rdm_records_service.read( + system_identity, + id_=published_version_rec.pid.pid_value, # type: ignore + ) + if published_version._record.parent.communities.default: # type: ignore + previous_default_id = ( + published_version._record.parent.communities.default.id + ) + else: + previous_default_id = None + + if previous_default_id != default_community_id: + try: + self._check_default_community_permission( + identity, + record, + "change", + old_record=published_version._record, + ) + except PermissionDeniedError as e: + raise SetDefaultCommunityError() from e diff --git a/site/kcworks/services/search/__init__.py b/site/kcworks/services/search/__init__.py index 49e0bd117..629b5f8b6 100644 --- a/site/kcworks/services/search/__init__.py +++ b/site/kcworks/services/search/__init__.py @@ -1,13 +1,10 @@ -# -*- coding: utf-8 -*- +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research # -# This file is part of Knowledge Commons Works -# Copyright (C) 2023-2024, MESH Research +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. # -# Knowledge Commons Works is free software; you can redistribute it and/or -# modify it under the terms of the MIT License; see LICENSE file for more -# details. -# -# Knowledge Commons Works is an extended instance of InvenioRDM: +# KCWorks is an extended instance of InvenioRDM: # Copyright (C) 2019-2024 CERN. # Copyright (C) 2019-2024 Northwestern University. # Copyright (C) 2021-2024 TU Wien. diff --git a/site/kcworks/services/search/index_templates/__init__.py b/site/kcworks/services/search/index_templates/__init__.py index 007e31993..f6dc61fe5 100644 --- a/site/kcworks/services/search/index_templates/__init__.py +++ b/site/kcworks/services/search/index_templates/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/affiliations/__init__.py b/site/kcworks/services/search/index_templates/affiliations/__init__.py index ba6ebea8c..ce25b0d85 100644 --- a/site/kcworks/services/search/index_templates/affiliations/__init__.py +++ b/site/kcworks/services/search/index_templates/affiliations/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/affiliations/os-v2/__init__.py b/site/kcworks/services/search/index_templates/affiliations/os-v2/__init__.py index 1a2ba2738..edfc2c5c6 100644 --- a/site/kcworks/services/search/index_templates/affiliations/os-v2/__init__.py +++ b/site/kcworks/services/search/index_templates/affiliations/os-v2/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/default/__init__.py b/site/kcworks/services/search/index_templates/default/__init__.py index 64bc06d52..4a2da9f8f 100644 --- a/site/kcworks/services/search/index_templates/default/__init__.py +++ b/site/kcworks/services/search/index_templates/default/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/default/os-v2/__init__.py b/site/kcworks/services/search/index_templates/default/os-v2/__init__.py index 204531f65..6dfe75d18 100644 --- a/site/kcworks/services/search/index_templates/default/os-v2/__init__.py +++ b/site/kcworks/services/search/index_templates/default/os-v2/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/drafts/__init__.py b/site/kcworks/services/search/index_templates/drafts/__init__.py index 093875884..ff81d1f31 100644 --- a/site/kcworks/services/search/index_templates/drafts/__init__.py +++ b/site/kcworks/services/search/index_templates/drafts/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/drafts/os-v2/__init__.py b/site/kcworks/services/search/index_templates/drafts/os-v2/__init__.py index 2dee29b61..d7029bb05 100644 --- a/site/kcworks/services/search/index_templates/drafts/os-v2/__init__.py +++ b/site/kcworks/services/search/index_templates/drafts/os-v2/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/records/__init__.py b/site/kcworks/services/search/index_templates/records/__init__.py index 1a8eb7421..00e4a4b39 100644 --- a/site/kcworks/services/search/index_templates/records/__init__.py +++ b/site/kcworks/services/search/index_templates/records/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/records/os-v2/__init__.py b/site/kcworks/services/search/index_templates/records/os-v2/__init__.py index 4fe1e9266..1ca9b72f1 100644 --- a/site/kcworks/services/search/index_templates/records/os-v2/__init__.py +++ b/site/kcworks/services/search/index_templates/records/os-v2/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/records/trigger.py b/site/kcworks/services/search/index_templates/records/trigger.py new file mode 100644 index 000000000..9c1bb0e17 --- /dev/null +++ b/site/kcworks/services/search/index_templates/records/trigger.py @@ -0,0 +1 @@ +This is not valid python code. \ No newline at end of file diff --git a/site/kcworks/services/search/index_templates/stats/__init__.py b/site/kcworks/services/search/index_templates/stats/__init__.py index a8d4ec2ba..3a6bb1bdb 100644 --- a/site/kcworks/services/search/index_templates/stats/__init__.py +++ b/site/kcworks/services/search/index_templates/stats/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/stats/aggr_file_download/__init__.py b/site/kcworks/services/search/index_templates/stats/aggr_file_download/__init__.py index 1ad1b347e..b90b22ad3 100644 --- a/site/kcworks/services/search/index_templates/stats/aggr_file_download/__init__.py +++ b/site/kcworks/services/search/index_templates/stats/aggr_file_download/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/stats/aggr_file_download/os-v2/__init__.py b/site/kcworks/services/search/index_templates/stats/aggr_file_download/os-v2/__init__.py index 1ad1b347e..b90b22ad3 100644 --- a/site/kcworks/services/search/index_templates/stats/aggr_file_download/os-v2/__init__.py +++ b/site/kcworks/services/search/index_templates/stats/aggr_file_download/os-v2/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/stats/aggr_record_view/__init__.py b/site/kcworks/services/search/index_templates/stats/aggr_record_view/__init__.py index ffbcedd90..4b910dd91 100644 --- a/site/kcworks/services/search/index_templates/stats/aggr_record_view/__init__.py +++ b/site/kcworks/services/search/index_templates/stats/aggr_record_view/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/stats/aggr_record_view/os-v2/__init__.py b/site/kcworks/services/search/index_templates/stats/aggr_record_view/os-v2/__init__.py index ffbcedd90..4b910dd91 100644 --- a/site/kcworks/services/search/index_templates/stats/aggr_record_view/os-v2/__init__.py +++ b/site/kcworks/services/search/index_templates/stats/aggr_record_view/os-v2/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/stats/file_download/__init__.py b/site/kcworks/services/search/index_templates/stats/file_download/__init__.py index 81f867e44..da7a0d5e2 100644 --- a/site/kcworks/services/search/index_templates/stats/file_download/__init__.py +++ b/site/kcworks/services/search/index_templates/stats/file_download/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/stats/file_download/os-v2/__init__.py b/site/kcworks/services/search/index_templates/stats/file_download/os-v2/__init__.py index 3a66fcb64..dc7ef01a0 100644 --- a/site/kcworks/services/search/index_templates/stats/file_download/os-v2/__init__.py +++ b/site/kcworks/services/search/index_templates/stats/file_download/os-v2/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/stats/record_view/__init__.py b/site/kcworks/services/search/index_templates/stats/record_view/__init__.py index ec2ba5a19..ed0bcc77d 100644 --- a/site/kcworks/services/search/index_templates/stats/record_view/__init__.py +++ b/site/kcworks/services/search/index_templates/stats/record_view/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/stats/record_view/os-v2/__init__.py b/site/kcworks/services/search/index_templates/stats/record_view/os-v2/__init__.py index 2d93b3184..1770e7398 100644 --- a/site/kcworks/services/search/index_templates/stats/record_view/os-v2/__init__.py +++ b/site/kcworks/services/search/index_templates/stats/record_view/os-v2/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/subjects/__init__.py b/site/kcworks/services/search/index_templates/subjects/__init__.py index 88bd4ef1c..0b568899d 100644 --- a/site/kcworks/services/search/index_templates/subjects/__init__.py +++ b/site/kcworks/services/search/index_templates/subjects/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/subjects/os-v2/__init__.py b/site/kcworks/services/search/index_templates/subjects/os-v2/__init__.py index 70378ad3a..fce84117a 100644 --- a/site/kcworks/services/search/index_templates/subjects/os-v2/__init__.py +++ b/site/kcworks/services/search/index_templates/subjects/os-v2/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # diff --git a/site/kcworks/services/search/index_templates/templates.py b/site/kcworks/services/search/index_templates/templates.py index 320288474..8ce4f7571 100644 --- a/site/kcworks/services/search/index_templates/templates.py +++ b/site/kcworks/services/search/index_templates/templates.py @@ -1,13 +1,10 @@ -# -*- coding: utf-8 -*- +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research # -# This file is part of Knowledge Commons Works -# Copyright (C) 2023-2024, MESH Research +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. # -# Knowledge Commons Works is free software; you can redistribute it and/or -# modify it under the terms of the MIT License; see LICENSE file for more -# details. -# -# Knowledge Commons Works is an extended instance of InvenioRDM: +# KCWorks is an extended instance of InvenioRDM: # Copyright (C) 2019-2024 CERN. # Copyright (C) 2019-2024 Northwestern University. # Copyright (C) 2021-2024 TU Wien. diff --git a/site/kcworks/services/search/indices.py b/site/kcworks/services/search/indices.py index f866bb12c..adc5a70f0 100644 --- a/site/kcworks/services/search/indices.py +++ b/site/kcworks/services/search/indices.py @@ -1,13 +1,10 @@ -# -*- coding: utf-8 -*- +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research # -# This file is part of Knowledge Commons Works -# Copyright (C) 2023-2024, MESH Research +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. # -# Knowledge Commons Works is free software; you can redistribute it and/or -# modify it under the terms of the MIT License; see LICENSE file for more -# details. -# -# Knowledge Commons Works is an extended instance of InvenioRDM: +# KCWorks is an extended instance of InvenioRDM: # Copyright (C) 2019-2024 CERN. # Copyright (C) 2019-2024 Northwestern University. # Copyright (C) 2021-2024 TU Wien. @@ -16,15 +13,32 @@ # under the terms of the MIT License. See the LICENSE file in the # invenio-app-rdm package for more details. +"""Functions for managing search indices.""" + +from collections.abc import Generator + from invenio_search.proxies import current_search_client -from typing import Optional -def delete_index(index_names: list[str], ignore: Optional[list[int]] = None): +def delete_index( + index_names: list[str], ignore: list[int] | None = None +) -> None | Generator[tuple[str, dict], None, None]: """Delete the search indices specified in the list. - The indices are specified by their aliases. These must be complete aliases - (e.g. `kcworks-stats-record-view`). + Args: + index_names (list[str]): The list of index names to delete. + ignore (list[int] | None, optional): The list of error codes to ignore. + Defaults to None. + + Returns: + None | Generator[tuple[str, dict], None, None]: A generator of the deleted + indices and their responses. If any indices are not found, they are + added to the list of failed indices. If no indices are found, the + function returns None. + + Note: + The indices are specified by their aliases. These must be complete aliases + (e.g. `kcworks-stats-record-view`). """ failed_indices = [] for index_name in index_names: diff --git a/site/kcworks/services/search/queryparser/query.py b/site/kcworks/services/search/queryparser/query.py index 291b9e5b3..fd419020f 100644 --- a/site/kcworks/services/search/queryparser/query.py +++ b/site/kcworks/services/search/queryparser/query.py @@ -1,13 +1,10 @@ -# -*- coding: utf-8 -*- +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research # -# This file is part of Knowledge Commons Works -# Copyright (C) 2023-2024, MESH Research +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. # -# Knowledge Commons Works is free software; you can redistribute it and/or -# modify it under the terms of the MIT License; see LICENSE file for more -# details. -# -# Knowledge Commons Works is an extended instance of InvenioRDM: +# KCWorks is an extended instance of InvenioRDM: # Copyright (C) 2019-2024 CERN. # Copyright (C) 2019-2024 Northwestern University. # Copyright (C) 2021-2024 TU Wien. @@ -16,28 +13,23 @@ # under the terms of the MIT License. See the LICENSE file in the # invenio-app-rdm package for more details. -from invenio_records_resources.services.records.queryparser.query import ( - QueryParser, -) +"""Query parser for KCWorks.""" +from invenio_records_resources.services.errors import QuerystringValidationError +from invenio_records_resources.services.records.queryparser.query import QueryParser from invenio_search.engine import dsl from luqum.auto_head_tail import auto_head_tail from luqum.exceptions import ParseError from luqum.parser import parser as luqum_parser -from invenio_records_resources.services.errors import ( - QuerystringValidationError, -) - class MemberQueryParser(QueryParser): - """ - Query parser for members search. + """Query parser for members search. Adds a wildcard to the query string. """ - def parse(self, query_str): + def parse(self, query_str: str): """Parse the query.""" try: # We parse the Lucene query syntax in Python, so we know upfront @@ -49,9 +41,7 @@ def parse(self, query_str): mapping=self.mapping, allow_list=self.allow_list, ) - new_tree = transformer.visit( - tree, context={"identity": self.identity} - ) + new_tree = transformer.visit(tree, context={"identity": self.identity}) new_tree = auto_head_tail(new_tree) query_str = str(new_tree) return dsl.Q( diff --git a/site/kcworks/services/users/cli.py b/site/kcworks/services/users/cli.py index 1a68107ba..668cc4379 100644 --- a/site/kcworks/services/users/cli.py +++ b/site/kcworks/services/users/cli.py @@ -1,14 +1,23 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""CLI commands for the users service.""" + +from pprint import pprint + import click -from kcworks.services.users.service import UserProfileService +from flask.cli import with_appcontext +from invenio_access.permissions import system_identity from invenio_accounts.models import UserIdentity from invenio_accounts.proxies import current_accounts -from invenio_access.permissions import system_identity from invenio_users_resources.proxies import ( current_groups_service, current_users_service, ) -from flask.cli import with_appcontext -from pprint import pprint +from kcworks.services.users.service import UserProfileService @click.command("name-parts") @@ -80,8 +89,14 @@ def name_parts( parental, undivided, nickname, -): - """Update the name parts for the specified user.""" +) -> None: + """CLI command to update the name parts for the specified user. + + Parameters: + user_id (str): The ID of the user to update. + given (str | None): The given name of the user. + family (str | None): The family name of the user. + """ name_parts = { "given": given, "family": family, @@ -119,8 +134,14 @@ def name_parts( @click.option("-e", "--email", type=str, required=False) @click.option("-k", "--kc-id", type=str, required=False) @with_appcontext -def read(user_id, email, kc_id): - """Read user data for a user.""" +def read(user_id: str | None, email: str | None, kc_id: str | None) -> None: + """CLI command to read user data for a user. + + Parameters: + user_id (str | None): The ID of the user to read. + email (str | None): The email of the user to read. + kc_id (str | None): The KC ID of the user to read. + """ print("=============") if user_id: user = current_users_service.read(system_identity, id_=user_id) @@ -175,7 +196,8 @@ def read(user_id, email, kc_id): @click.command("groups") @with_appcontext -def groups(): +def groups() -> None: + """CLI command to list all groups (roles).""" groups = current_groups_service.list(system_identity) pprint([g.name for g in groups]) @@ -183,7 +205,12 @@ def groups(): @click.command("group-users") @click.argument("group_name", type=str, required=True) @with_appcontext -def group_users(group_name): +def group_users(group_name: str) -> None: + """CLI command to list all users for a group (role). + + Parameters: + group_name (str): The name of the group (role) to list users for. + """ my_group_role = current_accounts.datastore.find_role(group_name) # app.logger.debug(f"got group role {my_group_role}") users = [(user.id, user.email) for user in my_group_role.users] @@ -199,10 +226,22 @@ def group_users(group_name): @click.option("-k", "--kc-id", type=str, required=False) @click.option("-r", "--collection-role", type=str, required=False) @with_appcontext -def user_groups(user_id, email, kc_id, collection_role): - """Get the groups (roles) for a user.""" +def user_groups( + user_id: str | None, + email: str | None, + kc_id: str | None, + collection_role: str | None, +) -> None: + """CLI command to list the groups (roles) for a user. + + Parameters: + user_id (str | None): The ID of the user to get groups for. + email (str | None): The email of the user to get groups for. + kc_id (str | None): The KC ID of the user to get groups for. + collection_role (str | None): The collection role to get groups for. + """ print("=============") - identifier = (None, None) + identifier: tuple[str, str] = ("", "") if user_id: return_user = current_accounts.datastore.get_user_by_id(user_id) identifier = ("id", user_id) @@ -219,7 +258,6 @@ def user_groups(user_id, email, kc_id, collection_role): user_identity.id_user ) identifier = ("kc_id", kc_id) - identifier = ("kc_id", kc_id) else: pprint("No user ID, email, or KC ID provided.") return diff --git a/site/kcworks/services/users/service.py b/site/kcworks/services/users/service.py index d66b633e5..2ce5aad6a 100644 --- a/site/kcworks/services/users/service.py +++ b/site/kcworks/services/users/service.py @@ -1,13 +1,10 @@ -# -*- coding: utf-8 -*- +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research # -# This file is part of Knowledge Commons Works -# Copyright (C) 2023-2024, MESH Research +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. # -# Knowledge Commons Works is free software; you can redistribute it and/or -# modify it under the terms of the MIT License; see LICENSE file for more -# details. -# -# Knowledge Commons Works is an extended instance of InvenioRDM: +# KCWorks is an extended instance of InvenioRDM: # Copyright (C) 2019-2024 CERN. # Copyright (C) 2019-2024 Northwestern University. # Copyright (C) 2021-2024 TU Wien. @@ -16,33 +13,58 @@ # under the terms of the MIT License. See the LICENSE file in the # invenio-app-rdm package for more details. -from flask import current_app -from invenio_accounts.proxies import current_accounts +"""Service for updating and reading user profile information.""" + import json +from typing import Any, cast + from invenio_accounts.models import User +from invenio_accounts.proxies import current_accounts class UserProfileService: + """Service for updating and reading user profile information.""" @classmethod - def update_local_name_parts(cls, user_id: str, name_parts: dict) -> User: + def update_local_name_parts(cls, user_id: str, name_parts: dict[str, Any]) -> User: """Update the locally edited name parts for the specified user. + Args: + user_id: The ID of the user to update. + name_parts: A dictionary containing the name parts to update. + Returns: User: The updated user object. - """ + Raises: + ValueError: If the user ID is not found. + """ user_object = current_accounts.datastore.get_user_by_id(user_id) + if not user_object: + raise ValueError(f"User with ID {user_id} not found") profile = user_object.user_profile profile["name_parts_local"] = json.dumps(name_parts) user_object.user_profile = profile - current_app.logger.info(f"Updating name parts for user {user_id}") - current_app.logger.info(f"New profile: {profile}") current_accounts.datastore.commit() return user_object @classmethod - def read_local_name_parts(cls, user_id: str) -> dict: - """Read the locally edited name parts for the specified user.""" + def read_local_name_parts(cls, user_id: str) -> dict[str, Any]: + """Read the locally edited name parts for a user. + + Args: + user_id: The ID of the user. + + Returns: + dict: The locally edited name parts for the user. + + Raises: + ValueError: If the user ID is not found. + """ user_object = current_accounts.datastore.get_user_by_id(user_id) - return json.loads(user_object.user_profile.get("name_parts_local", "{}")) + if not user_object: + raise ValueError(f"User with ID {user_id} not found") + return cast( + dict[str, Any], + json.loads(user_object.user_profile.get("name_parts_local", "{}")), + ) diff --git a/site/kcworks/stats_dashboard/legacy/flask-stats/flaskr-stats/__init__.py b/site/kcworks/stats_dashboard/legacy/flask-stats/flaskr_stats/__init__.py similarity index 100% rename from site/kcworks/stats_dashboard/legacy/flask-stats/flaskr-stats/__init__.py rename to site/kcworks/stats_dashboard/legacy/flask-stats/flaskr_stats/__init__.py diff --git a/site/kcworks/stats_dashboard/legacy/flask-stats/flaskr-stats/stats.py b/site/kcworks/stats_dashboard/legacy/flask-stats/flaskr_stats/stats.py similarity index 100% rename from site/kcworks/stats_dashboard/legacy/flask-stats/flaskr-stats/stats.py rename to site/kcworks/stats_dashboard/legacy/flask-stats/flaskr_stats/stats.py diff --git a/site/kcworks/stats_dashboard/legacy/flask-stats/pyproject.toml b/site/kcworks/stats_dashboard/legacy/flask-stats/pyproject.toml index 2324db138..e49f83f09 100644 --- a/site/kcworks/stats_dashboard/legacy/flask-stats/pyproject.toml +++ b/site/kcworks/stats_dashboard/legacy/flask-stats/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "flaskr-stats" +name = "flaskr_stats" version = "1.0.0" description = "The basic blog app built in the Flask tutorial." readme = "README.rst" @@ -20,7 +20,7 @@ requires = ["flit_core<4"] build-backend = "flit_core.buildapi" [tool.flit.module] -name = "flaskr-stats" +name = "flaskr_stats" [tool.flit.sdist] include = [ diff --git a/site/kcworks/utils.py b/site/kcworks/utils.py index 87de665ec..dd1f84abc 100644 --- a/site/kcworks/utils.py +++ b/site/kcworks/utils.py @@ -1,23 +1,59 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it under the +# terms of the MIT License; see LICENSE file for more details. + +"""Utility functions for KCWorks.""" + +from typing import Any + from invenio_accounts.models import User -from typing import Optional +from invenio_rdm_records.records.api import RDMDraft, RDMRecord +from invenio_rdm_records.records.systemfields.access.field.record import RecordAccess -def update_nested_dict(starting_dict, updates): - """Update a nested dictionary with another dictionary.""" - for key, value in updates.items(): - if isinstance(value, dict): - starting_dict[key] = update_nested_dict( - starting_dict.get(key, {}), value - ) - else: - starting_dict[key] = value - return starting_dict +def update_nested_dict(starting_value: Any, updates: Any) -> Any: + """Update a nested dictionary with another dictionary. + + This function is a recursive function that updates a nested dictionary with another + dictionary. It handles nested dictionaries and lists. + + List items are updated by index. If there are more items in a list in the updates + than in the equivalent list in the starting_value, the remaining items are added + to the end of the list. + + If there are more items in the starting_value than in the updates, the remaining + items are not removed from the list. + + The two starting values must have lists and dictionaries in compatible locations + in the structure. If one has a list where the other has a dictionary, the function + will raise a TypeError. + """ + if isinstance(updates, dict): + for key, value in updates.items(): + starting_value[key] = update_nested_dict(starting_value.get(key, {}), value) + elif isinstance(updates, list): + for idx, item in enumerate(updates): + if idx < len(starting_value): + starting_value[idx] = update_nested_dict(starting_value[idx], item) + else: + starting_value.append(item) + else: + starting_value = updates + return starting_value def get_commons_user_from_contributor(contributor: dict) -> str: """Get the Commons username from a contributor dict. If one can't be found, return an empty string. + + Parameters: + contributor: A contributor dict. + + Returns: + The Commons username as a string. """ id = "" if contributor["person_or_org"].get("identifiers"): @@ -31,25 +67,232 @@ def get_commons_user_from_contributor(contributor: dict) -> str: # FIXME: implement -def get_user_by_commons_username(commons_username: str) -> Optional[User]: - """Get a kcworks user by their Commons username based on saml login.""" - return None +def get_user_by_commons_username(commons_username: str) -> User | None: + """Get a kcworks user by their Commons username based on saml login. + + Parameters: + commons_username: The Commons username to search for. + + Returns: + The KCWorks user. + """ + raise NotImplementedError("Not implemented") -def get_kcworks_user_from_contributor(contributor: dict) -> Optional[User]: +def get_kcworks_user_from_contributor(contributor: dict) -> User | None: """Get the KCWorks user from a contributor dict. - If one can't be found, return None. + Parameters: + contributor: A contributor dict. + + Returns: + The KCWorks user. If one can't be found, return None. """ user = None commons_user = get_commons_user_from_contributor(contributor) if commons_user: user = get_user_by_commons_username(commons_user) - else: - orcid = [ - i - for i in contributor["person_or_org"].get("identifiers", []) - if i["scheme"] == "orcid" - ] - # FIXME: get the user by orcid + # else: + # orcid = [ + # i + # for i in contributor["person_or_org"].get("identifiers", []) + # if i["scheme"] == "orcid" + # ] + # FIXME: get the user by orcid return user + + +def get_changed_fields( + existing_data: dict | RDMDraft | RDMRecord | Any | None, + new_data: dict | RDMRecord | RDMDraft | Any | None, + separator: str = ".", + current_field_path: str = "", +) -> list: + """Get the fields that have been changed in the new version of a metadata record. + + By default the output list of field paths will use a dot (`.`) as the separator. + This can be changed by passing a different separator (e.g., `|`) to the + `separator` parameter. Be careful, though, that the separator is a character + that is not present in the field names. A colon, for example, is not safe. + + Parameters: + existing_data: The initial state of the record data. + new_data: The new state of the record data. + current_field_path: The current field path of the for the section of the + data dictionary we are currently processing. (Used for recursion only.) + separator: The separator to use between segments in the field paths. Used + internally and in the output list. + + Returns a list of field paths that have been changed. + """ + changed_field_paths = [] + existing_data_val = existing_data + new_data_val = new_data + if isinstance(existing_data, RDMDraft) or isinstance(existing_data, RDMRecord): + existing_data_dict = {"metadata": existing_data.metadata} + if hasattr(existing_data, "custom_fields"): + existing_data_dict["custom_fields"] = existing_data.custom_fields + if hasattr(existing_data, "access"): + if isinstance(existing_data.access, RecordAccess): + existing_data_dict["access"] = existing_data.access.dump() + else: + existing_data_dict["access"] = existing_data.access + existing_data_val = existing_data_dict + + if isinstance(new_data, RDMDraft) or isinstance(new_data, RDMRecord): + new_data_dict = {"metadata": new_data.metadata} + if hasattr(new_data, "custom_fields"): + new_data_dict["custom_fields"] = new_data.custom_fields + if hasattr(new_data, "access"): + new_data_dict["access"] = new_data.access + new_data_val = new_data_dict + + if not existing_data_val and current_field_path: + return [current_field_path] + if isinstance(new_data_val, dict) and isinstance(existing_data_val, dict): + if not current_field_path: + existing_data_val = { + k: v + for k, v in existing_data_val.items() + if k not in ["id", "created", "updated", "pid"] + } + new_data_val = { + k: v + for k, v in new_data_val.items() + if k not in ["id", "created", "updated", "pid"] + } + for key, value in new_data_val.items(): + changed_field_paths.extend( + get_changed_fields( + ( + existing_data_val.get(key) + if isinstance(existing_data_val, dict) + else None + ), + value, + separator=separator, + current_field_path=separator.join( + [p for p in [current_field_path, str(key)] if p] + ), + ) + ) + # Check for keys in existing_data that are missing from new_data + for key in existing_data_val.keys(): + if key not in new_data_val: + changed_field_paths.append( + separator.join([p for p in [current_field_path, str(key)] if p]) + ) + elif ( + isinstance(new_data_val, list) + or isinstance(new_data_val, tuple) + or isinstance(new_data_val, set) + ): + for index, value in enumerate(new_data_val): + try: + existing_value = ( + list(existing_data_val)[index] + if isinstance(existing_data_val, list | tuple | set) + else None + ) + except IndexError: + existing_value = None + changed_field_paths.extend( + get_changed_fields( + existing_value, + value, + separator=separator, + current_field_path=separator.join( + [p for p in [current_field_path, str(index)] if p] + ), + ) + ) + # handle the case where the existing data is longer than the new data + for index in ( + range(len(existing_data_val) - len(new_data_val)) + if isinstance(existing_data_val, list) + else [] + ): + changed_field_paths.append( + separator.join( + [ + p + for p in [current_field_path, str(index + len(new_data_val))] + if p + ] + ) + ) + else: + if existing_data_val != new_data_val: + changed_field_paths.append(current_field_path) + return list(set(changed_field_paths)) + + +def get_value_by_path(data: dict[str, Any], path: str, separator: str = ".") -> Any: + """Get a value from a nested dictionary using a path string. + + Parameters: + data: The dictionary to search. The dictionary may include nested + dictionaries and lists. + path: The path string to search for. The path string is a dot-separated list + of keys. If one of the keys is a digit, it will be treated as an + integer index in a list. + separator: The separator to use between segments in the path. + + Raises a KeyError if the path is not found. + + Returns the value at the end of the path. + + """ + path_segments = path.split(separator) + result: Any = data + for key in path_segments: + if isinstance(result, dict): + result = result.get(key) + elif isinstance(result, list) and result is not None: + try: + result = result[int(key)] + except (ValueError, IndexError): + return None + else: + return None + return result + + +def matching_list_parts_skip_digits(listA: list, listB: list) -> list: + """Check if the lists begin with a matching set of elements, ignoring digits. + + Parameters: + listA: The list to check. + listB: The list to compare to. + + Returns: + The list of elements that match the restricted parts. + If the lists do not match, returns an empty list. + + Note: + Assumes that listB may pack digit elements that listA has, as when listB + is a field path that omits indices for list fields. ListA is expected to + have the indices. + """ + i = j = 0 + while i < len(listA) and j < len(listB): + # If restricted part is a digit, it must match exactly + if listB[j].isdigit(): + if not listA[i].isdigit() or listA[i] != listB[j]: + return [] + i += 1 + j += 1 + # If changed part is a digit but restricted isn't, skip the digit + elif listA[i].isdigit(): + i += 1 + # Otherwise compare the parts normally + else: + if listA[i] != listB[j]: + return [] + i += 1 + j += 1 + # Make sure we've used all restricted parts + if j == len(listB): + return listA[:i] + else: + return [] diff --git a/site/tests/__init__.py b/site/kcworks/views/admin_login/__init__.py similarity index 100% rename from site/tests/__init__.py rename to site/kcworks/views/admin_login/__init__.py diff --git a/site/kcworks/views/admin_login/admin_login.py b/site/kcworks/views/admin_login/admin_login.py index 3c7329a32..c9f8441d6 100644 --- a/site/kcworks/views/admin_login/admin_login.py +++ b/site/kcworks/views/admin_login/admin_login.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Repository # Copyright (C) 2023, MESH Research # @@ -23,17 +21,11 @@ password. It is not linked to from any other page in the repository. """ -from flask import ( - render_template, - current_app, - request, - redirect, - session, - after_this_request, -) +from flask import Response, after_this_request, current_app, redirect, request from flask.views import MethodView from flask_security.utils import get_post_login_redirect, login_user from werkzeug.local import LocalProxy +from werkzeug.wrappers.response import Response as WerkzeugResponse _security = LocalProxy(lambda: current_app.extensions["security"]) @@ -45,18 +37,17 @@ def _ctx(endpoint): class AdminLogin(MethodView): - """ - Class providing view class for administrative login. - """ + """View class for administrative login.""" def __init__(self): + """Initialize the AdminLogin view.""" + current_app.logger.info("AdminLogin __init__") self.template = "kcworks/view_templates/admin_login.html" - def get(self): - """ - Render the template for GET requests. - """ + def get(self) -> Response | WerkzeugResponse: + """Render the template for GET requests.""" form_class = _security.login_form + current_app.logger.info("form_class", form_class) form = form_class(request.form) diff --git a/site/kcworks/views/api/notifications.py b/site/kcworks/views/api/notifications.py index 42e141dff..b185f2b50 100644 --- a/site/kcworks/views/api/notifications.py +++ b/site/kcworks/views/api/notifications.py @@ -1,15 +1,22 @@ -from flask import current_app as app, jsonify, g, request -from flask_login import current_user +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""View for the internal notifications API endpoint.""" +from flask import Response +from flask import current_app as app +from flask import jsonify, request from flask.views import MethodView +from flask_login import current_user from invenio_access.utils import get_identity from kcworks.proxies import current_internal_notifications -from typing import Optional -from werkzeug.exceptions import Unauthorized, Forbidden, BadRequest +from werkzeug.exceptions import BadRequest, Forbidden, Unauthorized class InternalNotifications(MethodView): - """ - View class for the internal notifications api endpoint. + """View class for the internal notifications api endpoint. This endpoint is used to manage in-app user notifications in KCWorks. @@ -20,14 +27,27 @@ class InternalNotifications(MethodView): view_name = "internal_notifications" def __init__(self): + """Initialize the InternalNotifications view.""" self.logger = app.logger - def get(self, user_id: int, action: str): - """ - Handle GET requests to the user notifications unread endpoint. + def get(self, user_id: int, action: str) -> tuple[Response, int]: + """Handle GET requests to the user notifications unread endpoint. + + Parameters: + user_id (int): The ID of the user to get notifications for. + action (str): The action to perform on the notifications. + + Returns: + tuple[Response, int]: A tuple containing the response and the status code. - This action is used to read the user's unread notifications. It - is permitted for any user. + Raises: + Unauthorized: If the user is not authenticated. + Forbidden: If the user is not authorized to perform the action. + BadRequest: If the action is invalid. + + Note: + This action is used to read the user's unread notifications. It + is permitted for any user. """ if not current_user.is_authenticated: raise Unauthorized @@ -39,8 +59,8 @@ def get(self, user_id: int, action: str): # to be able to authenticate the request somehow from client side # for methods other than GET if action == "clear": - request_id: Optional[str] = request.args.get("request_id") - comment_id: Optional[str] = request.args.get("comment_id") + request_id: str | None = request.args.get("request_id") + comment_id: str | None = request.args.get("comment_id") unread_notification = current_internal_notifications.clear_unread( get_identity(current_user), user_id=user_id, @@ -55,8 +75,7 @@ def get(self, user_id: int, action: str): return jsonify(unread_notifications), 200 else: raise BadRequest( - f"Invalid action: {action}. " - "Valid actions are 'clear' and 'list'." + f"Invalid action: {action}. Valid actions are 'clear' and 'list'." ) # def post(self, user_id): @@ -74,12 +93,21 @@ def get(self, user_id: int, action: str): # ) # return jsonify(new_notification), 200 - def delete(self, user_id): - """ - Handle DELETE requests to the user notifications unread endpoint. + def delete(self, user_id: int) -> tuple[Response, int]: + """Handle DELETE requests to the user notifications unread endpoint. This action is used to clear the user's unread notifications. It is permitted only for the system process and the user themselves. + + Parameters: + user_id (int): The ID of the user to clear notifications for. + + Returns: + tuple[Response, int]: A tuple containing the response and the status code. + + Raises: + Unauthorized: If the user is not authenticated. + Forbidden: If the user is not authorized to perform the action. """ request_id = request.args.get("request_id") comment_id = request.args.get("comment_id") @@ -88,9 +116,7 @@ def delete(self, user_id): if not current_user.id == user_id: raise Forbidden - remaining_unread = ( - current_internal_notifications.clear_unread_notifications( - get_identity(current_user), user_id, request_id, comment_id - ) + remaining_unread = current_internal_notifications.clear_unread_notifications( + get_identity(current_user), user_id, request_id, comment_id ) return jsonify({"remaining_unread": remaining_unread}), 200 diff --git a/site/kcworks/views/previewers/invenio_custom_default_viewer/custom_default_viewer.py b/site/kcworks/views/previewers/invenio_custom_default_viewer/custom_default_viewer.py index f7d1ffe86..7c0a3c8b2 100644 --- a/site/kcworks/views/previewers/invenio_custom_default_viewer/custom_default_viewer.py +++ b/site/kcworks/views/previewers/invenio_custom_default_viewer/custom_default_viewer.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # @@ -19,7 +17,6 @@ """Default rendering returning a default web page.""" from flask import render_template - from invenio_previewer.proxies import current_previewer previewable_extensions = [".docx", ".doc", ".pptx", ".ppt", ".tex"] @@ -36,6 +33,5 @@ def preview(file): "custom_previewers/invenio_custom_default_viewer/default_viewer.html", file=file, js_bundles=current_previewer.js_bundles, - css_bundles=current_previewer.css_bundles - + ["custom_default_viewer_css.css"], + css_bundles=current_previewer.css_bundles + ["custom_default_viewer_css.css"], ) diff --git a/site/kcworks/views/previewers/invenio_custom_docx_viewer/custom_docx_viewer.py b/site/kcworks/views/previewers/invenio_custom_docx_viewer/custom_docx_viewer.py index 7ef0bc708..2dff38dd2 100644 --- a/site/kcworks/views/previewers/invenio_custom_docx_viewer/custom_docx_viewer.py +++ b/site/kcworks/views/previewers/invenio_custom_docx_viewer/custom_docx_viewer.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # @@ -18,10 +16,7 @@ """Docx previewer.""" -from __future__ import absolute_import, print_function - from flask import render_template - from invenio_previewer.proxies import current_previewer previewable_extensions = [".docx", ".doc"] diff --git a/site/kcworks/views/previewers/invenio_custom_latex_viewer/custom_latex_viewer.py b/site/kcworks/views/previewers/invenio_custom_latex_viewer/custom_latex_viewer.py index 37ba445aa..947b3de7c 100644 --- a/site/kcworks/views/previewers/invenio_custom_latex_viewer/custom_latex_viewer.py +++ b/site/kcworks/views/previewers/invenio_custom_latex_viewer/custom_latex_viewer.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # @@ -18,10 +16,7 @@ """LaTeX previewer.""" -from __future__ import absolute_import, print_function - from flask import render_template - from invenio_previewer.proxies import current_previewer previewable_extensions = [".tex", ".bib", ".cls"] diff --git a/site/kcworks/views/previewers/invenio_custom_pdf_viewer/custom_pdf_viewer.py b/site/kcworks/views/previewers/invenio_custom_pdf_viewer/custom_pdf_viewer.py index 5a68517d2..5ee58e1cc 100644 --- a/site/kcworks/views/previewers/invenio_custom_pdf_viewer/custom_pdf_viewer.py +++ b/site/kcworks/views/previewers/invenio_custom_pdf_viewer/custom_pdf_viewer.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Invenio. # Copyright (C) 2015-2019 CERN. # @@ -8,10 +6,7 @@ """PDF previewer based on pdf.js.""" -from __future__ import absolute_import, print_function - from flask import render_template - from invenio_previewer.proxies import current_previewer previewable_extensions = ["pdf", "pdfa"] diff --git a/site/kcworks/views/previewers/invenio_custom_pptx_viewer/custom_pptx_viewer.py b/site/kcworks/views/previewers/invenio_custom_pptx_viewer/custom_pptx_viewer.py index ae07517e9..01aa1b022 100644 --- a/site/kcworks/views/previewers/invenio_custom_pptx_viewer/custom_pptx_viewer.py +++ b/site/kcworks/views/previewers/invenio_custom_pptx_viewer/custom_pptx_viewer.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Works # Copyright (C) 2023-2024, MESH Research # @@ -18,10 +16,7 @@ """PPTX previewer.""" -from __future__ import absolute_import, print_function - from flask import render_template - from invenio_previewer.proxies import current_previewer previewable_extensions = [".pptx", ".ppt"] diff --git a/site/kcworks/views/task_results/__init__.py b/site/kcworks/views/task_results/__init__.py index 4f01c032a..01fa7a9f7 100644 --- a/site/kcworks/views/task_results/__init__.py +++ b/site/kcworks/views/task_results/__init__.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Repository # Copyright (C) 2023, MESH Research # diff --git a/site/kcworks/views/task_results/task_results.py b/site/kcworks/views/task_results/task_results.py index eeadab0e2..8181a9e8a 100644 --- a/site/kcworks/views/task_results/task_results.py +++ b/site/kcworks/views/task_results/task_results.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- -# # This file is part of Knowledge Commons Repository # Copyright (C) 2023, MESH Research # @@ -16,37 +14,21 @@ # under the terms of the MIT License. See the LICENSE file in the # invenio-app-rdm package for more details. +"""View for monitoring the result of asynchronous celery tasks.""" + from celery.result import AsyncResult from flask import render_template from flask.views import MethodView -"""View for monitoring the result of asynchronous celery tasks. -""" - class TaskResults(MethodView): - """ - Class providing view method for viewing the results of asynchronous celery - tasks. - """ + """View class for viewing the results of asynchronous celery tasks.""" def __init__(self): + """Initialize the template for the task results view.""" self.template = "kcworks/view_templates/task_results.html" def get(self, task_id): - """ - Render the template for GET requests. - """ - + """Render the template for GET requests.""" task_result = AsyncResult(task_id) - # print('******* task result: ', task_result) - # print(task_result.status) - # print(task_result.name) - # print(task_result.failed) - # print(task_result.successful) - # print(task_result.id) - # print(task_result.info) - # print(task_result.result) - # print(task_result.state) - # print(dir(task_result)) return render_template(self.template, task_result=task_result) diff --git a/site/kcworks/views/views.py b/site/kcworks/views/views.py index e50a8fe6f..91d5c38c2 100644 --- a/site/kcworks/views/views.py +++ b/site/kcworks/views/views.py @@ -1,32 +1,23 @@ """Additional views.""" -from flask import Blueprint, make_response, jsonify +from flask import Blueprint, jsonify, make_response from invenio_records_resources.services.errors import PermissionDeniedError -from kcworks.views.task_results.task_results import TaskResults from kcworks.views.admin_login.admin_login import AdminLogin from kcworks.views.api.notifications import InternalNotifications -from werkzeug.exceptions import ( - # BadRequest, - Forbidden, - MethodNotAllowed, - # NotFound, - # Unauthorized, -) +from kcworks.views.task_results.task_results import TaskResults +from werkzeug.exceptions import Forbidden, MethodNotAllowed -# -# Registration -# def create_blueprint(app): """Register blueprint routes on app.""" + app.logger.debug("create_blueprint") + blueprint = Blueprint( "kcworks", __name__, template_folder="../templates", ) - # routes = app.config.get("APP_RDM_ROUTES") - blueprint.add_url_rule( "/task_results/", view_func=TaskResults.as_view("task_results"), @@ -37,16 +28,6 @@ def create_blueprint(app): view_func=AdminLogin.as_view("admin_login"), ) - # Register error handlers - # blueprint.register_error_handler(PIDDeletedError, record_tombstone_error) - # blueprint.register_error_handler( - # PermissionDeniedError, record_permission_denied_error - # ) - - # Register template filters - # blueprint.add_app_template_filter(can_list_files) - # blueprint.add_app_template_filter(make_files_preview_compatible) - # Register context processor # blueprint.app_context_processor(search_app_context) @@ -55,7 +36,6 @@ def create_blueprint(app): def create_api_blueprint(app): """Register API blueprint routes on app.""" - with app.app_context(): blueprint = Blueprint( "kcworks_api", @@ -75,9 +55,7 @@ def create_api_blueprint(app): lambda e: make_response( jsonify( { - "message": ( - "You are not authorized to perform this action" - ), + "message": "You are not authorized to perform this action", "status": 403, } ), @@ -95,9 +73,7 @@ def create_api_blueprint(app): lambda e: make_response( jsonify( { - "message": ( - "You are not authorized to perform this action" - ), + "message": "You are not authorized to perform this action", "status": 403, } ), diff --git a/site/kcworks/vocabularies/ofr/ofr.py b/site/kcworks/vocabularies/ofr/ofr.py index 78c06f412..35d69e397 100644 --- a/site/kcworks/vocabularies/ofr/ofr.py +++ b/site/kcworks/vocabularies/ofr/ofr.py @@ -1,7 +1,6 @@ #! /usr/bin/env python -""" -Utilities for converting the OPF funders CSV file to a YAML vocabulary file. +"""Utilities for converting the OPF funders CSV file to a YAML vocabulary file. (c) 2024 Mesh Research @@ -25,6 +24,7 @@ import csv from pathlib import Path + import yaml @@ -34,7 +34,6 @@ def opf_csv_to_yaml(): Path(__file__).parent.parent.parent.parent.parent / "app_data" / "funderNames.csv", - "r", newline="", encoding="utf-8", ) as csv_file: @@ -46,13 +45,13 @@ def opf_csv_to_yaml(): data.append( { "id": row["uri"], - "name": row["primary_name_display"] - .replace("\n", " ") - .replace("\r", " ") - .replace("\x0d", ""), - "identifiers": [ - {"identifier": row["uri"], "scheme": "ofr"} - ], + "name": ( + row["primary_name_display"] + .replace("\n", " ") + .replace("\r", " ") + .replace("\x0d", "") + ), + "identifiers": [{"identifier": row["uri"], "scheme": "ofr"}], } ) diff --git a/site/kcworks/webpack.py b/site/kcworks/webpack.py index 2b9841756..ba1a3a537 100644 --- a/site/kcworks/webpack.py +++ b/site/kcworks/webpack.py @@ -1,4 +1,12 @@ -"""JS/CSS Webpack bundles for Knowledge Commons Repository.""" +# Part of KCWorks, Copyright (C) MESH Research, 2023 +# +# KCWorks is free software; you can redistribute it and/or modify it under the +# terms of the MIT License; see LICENSE file for more details. + +"""JS/CSS Webpack bundles for Knowledge Commons Repository. + +Employs the theme bundle system from invenio-assets and flask-webpackext. +""" from invenio_assets.webpack import WebpackThemeBundle @@ -7,44 +15,52 @@ "assets", default="semantic-ui", themes={ - "semantic-ui": dict( - entry={ - "custom_pdf_viewer_js": "./js/invenio_custom_pdf_viewer" - "/pdfjs.js", - "custom_pdf_viewer_css": "./scss/invenio_custom_pdf_viewer" - "/pdfjs.scss", - "custom_default_viewer_css": "./less/site/views/previewers/" - "custom_default_viewer.less", - "invenio-communities-new-custom": "./js/collections/community" - "/new.js", - "invenio-communities-frontpage-custom": "./js/collections/" - "community/frontpage.js", - "invenio-communities-search-custom": "./js/collections/" - "community/search.js", - "invenio-communities-featured-custom": "./js/collections/" - "community/featuredCommunities/index.js", - "invenio-communities-carousel-custom": "./js/collections/" - "community/communitiesCarousel/index.js", - "invenio-app-rdm-community-records-search-custom": "./js" - "/collections/communityRecordsSearch/index.js", - "invenio-communities-header": "./js/collections/community" - "/header.js", + "semantic-ui": { + "entry": { + "custom_pdf_viewer_js": "./js/invenio_custom_pdf_viewer/pdfjs.js", + "custom_pdf_viewer_css": "./scss/invenio_custom_pdf_viewer/pdfjs.scss", + "custom_default_viewer_css": ( + "./less/site/views/previewers/custom_default_viewer.less" + ), + "invenio-communities-new-custom": "./js/collections/community/new.js", + "invenio-communities-frontpage-custom": ( + "./js/collections/community/frontpage.js" + ), + "invenio-communities-search-custom": ( + "./js/collections/community/search.js" + ), + "invenio-communities-featured-custom": ( + "./js/collections/community/featuredCommunities/index.js" + ), + "invenio-communities-carousel-custom": ( + "./js/collections/community/communitiesCarousel/index.js" + ), + "invenio-app-rdm-community-records-search-custom": ( + "./js/collections/communityRecordsSearch/index.js" + ), + "invenio-communities-header": "./js/collections/community/header.js", # "invenio-communities-profile-custom": "./js/collections/" # "settings/profile/index.js", - "invenio-app-rdm-frontpage-custom": "./js/" - "invenio_app_rdm_custom/frontpage/index.js", - "invenio-app-rdm-user-communities-custom": "./js/" - "invenio_app_rdm_custom/user_dashboard/communities.js", + "invenio-app-rdm-frontpage-custom": ( + "./js/invenio_app_rdm_custom/frontpage/index.js" + ), + "invenio-app-rdm-user-communities-custom": ( + "./js/invenio_app_rdm_custom/user_dashboard/communities.js" + ), "main_ui_main_menu": "./js/main_ui/main_menu.js", }, - dependencies={ + "dependencies": { "geopattern": "^1.2.3", "orcid-utils": "^1.2.2", }, - aliases={ - "@js/invenio_modular_deposit_form_extras": "js/" - "invenio_modular_deposit_form_extras", + "aliases": { + "@js/invenio_modular_deposit_form_extras": ( + "js/invenio_modular_deposit_form_extras" + ), + "@js/kcworks/collections": "js/collections", + "@translations/kcworks": "translations/kcworks", + "@translations": "translations", }, - ), + }, }, ) diff --git a/site/pyproject.toml b/site/pyproject.toml deleted file mode 100644 index 708bea354..000000000 --- a/site/pyproject.toml +++ /dev/null @@ -1,73 +0,0 @@ -[build-system] -requires = ["setuptools>=61.0", "wheel", "babel>2.8"] -build-backend = "setuptools.build_meta" - -[project] -name = "kcworks" -version = "0.3.8-beta11" - -[project.optional-dependencies] -tests = ["pytest-invenio>=2.1.0,<3.0.0"] - -[project.entry-points."invenio_base.apps"] -kcworks = "kcworks.ext:KCWorks" - -[project.entry-points."invenio_base.api_apps"] -kcworks = "kcworks.ext:KCWorks" - -[project.entry-points."invenio_base.api_blueprints"] -kcworks_api = "kcworks.views.views:create_api_blueprint" - -[project.entry-points."invenio_base.blueprints"] -kcworks_views = "kcworks.views.views:create_blueprint" -knowledge_commons_works_menu = "kcworks.blueprints.menu_customization:create_blueprint" -kcworks_stats_dashboard_view = "kcworks.stats_dashboard.views:create_blueprint" - -[project.entry-points."invenio_assets.webpack"] -kcworks_theme = "kcworks.webpack:theme" - -[project.entry-points."invenio_previewer.previewers"] -custom_pdf_viewer = "kcworks.views.previewers.invenio_custom_pdf_viewer.custom_pdf_viewer" -custom_default_viewer = "kcworks.views.previewers.invenio_custom_default_viewer.custom_default_viewer" -custom_docx_viewer = "kcworks.views.previewers.invenio_custom_docx_viewer.custom_docx_viewer" -custom_pptx_viewer = "kcworks.views.previewers.invenio_custom_pptx_viewer.custom_pptx_viewer" -custom_latex_viewer = "kcworks.views.previewers.invenio_custom_latex_viewer.custom_latex_viewer" - -[project.entry-points."invenio_search.index_templates"] -kcworks = "kcworks.services.search.index_templates.templates:get_index_templates" - -[project.entry-points."flask.commands"] -kcworks-users = "kcworks.cli:kcworks_users" -kcworks-index = "kcworks.cli:kcworks_index" - -[project.scripts] -kcworks-users = "kcworks.cli:kcworks_users" -kcworks-index = "kcworks.cli:kcworks_index" - -[tool.pytest.ini_options] -testpaths = ["tests", "kcworks"] -addopts = "--doctest-glob='*.rst' --doctest-modules --ignore=tests/helpers --ignore=kcworks/dependencies --ignore=kcworks/stats_dashboard" -plugins = [ - "tests.fixtures.communities", - "tests.fixtures.custom_fields", - "tests.fixtures.identifiers", - "tests.fixtures.metadata_fields", - "tests.fixtures.records", - "tests.fixtures.roles", - "tests.fixtures.saml", - "tests.fixtures.search_provisioning", - "tests.fixtures.stats", - "tests.fixtures.users", - "tests.fixtures.vocabularies.affiliations", - "tests.fixtures.vocabularies.community_types", - "tests.fixtures.vocabularies.date_types", - "tests.fixtures.vocabularies.descriptions", - "tests.fixtures.vocabularies.languages", - "tests.fixtures.vocabularies.licenses", - "tests.fixtures.vocabularies.resource_types", - "tests.fixtures.vocabularies.roles", - "tests.fixtures.vocabularies.subjects", -] - -[tool.setuptools.package-data] -"*" = ["*.po", "*.pot", "*.mo"] diff --git a/site/setup.py b/site/setup.py deleted file mode 100644 index 606849326..000000000 --- a/site/setup.py +++ /dev/null @@ -1,3 +0,0 @@ -from setuptools import setup - -setup() diff --git a/site/tests/.gitkeep b/site/tests/.gitkeep deleted file mode 100644 index 327361ede..000000000 --- a/site/tests/.gitkeep +++ /dev/null @@ -1 +0,0 @@ -# This file exists only to add templates/ folder to git repository. diff --git a/site/tests/e2e/conftest.py b/site/tests/e2e/conftest.py deleted file mode 100644 index 8d61d8f76..000000000 --- a/site/tests/e2e/conftest.py +++ /dev/null @@ -1,12 +0,0 @@ -# ### tests/e2e/conftest.py ### -# E2E tests (requring both UI/API) goes in tests/e2e/ folder. -# from invenio_app.factory import create_app as create_ui_api -# import pytest - -# @pytest.fixture(scope='module') -# def app_config(app_config): -# return app_config - -# @pytest.fixture(scope='module') -# def create_app(): -# return create_ui_api diff --git a/site/tests/e2e/e2e_test_factory.py b/site/tests/e2e/e2e_test_factory.py deleted file mode 100644 index 4645df60b..000000000 --- a/site/tests/e2e/e2e_test_factory.py +++ /dev/null @@ -1,19 +0,0 @@ -from flask import url_for -from pprint import pprint -import pytest - - -def test_sample_e2e(): - assert True - - -@pytest.mark.skip(reason="Not implemented") -def test_frontpage_e2e(running_app, live_server, browser): - # pprint(dir(base_client)) - # pprint(dir(base_app)) - running_app.logger.info("test_frontpage_e2e") - running_app.logger.info(running_app.config.keys()) - response = browser.get(url_for("index", _external=True)) - response = browser.get("/") - pprint(dir(response)) - assert True diff --git a/site/tests/fixtures/metadata_fields/codemeta_fields.py b/site/tests/fixtures/metadata_fields/codemeta_fields.py deleted file mode 100644 index d7551cac0..000000000 --- a/site/tests/fixtures/metadata_fields/codemeta_fields.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf-8 -*- -from invenio_i18n import lazy_gettext as _ - -KCR_CODEMETA_CUSTOM_FIELDS_UI = { - "section": _("Software"), - "fields": [ - dict( - field="code:codeRepository", - ui_widget="TextField", - props=dict( - label="Repository URL", - icon="linkify", - description="URL or link where the code repository is hosted.", - ), - ), - dict( - field="code:programmingLanguage", - ui_widget="TextField", - props=dict( - label="Programming language", - icon="code", - description="Repository's programming language.", - placeholder="Python ...", - ), - ), - dict( - field="code:runtimePlatform", - ui_widget="TextField", - props=dict( - label="Runtime platform", - icon="cog", - description=( - "Repository runtime platform or script interpreter" - " dependencies." - ), - placeholder="Java v1, Python2.3, .Net Framework 3.0 ...", - ), - ), - dict( - field="code:operatingSystem", - ui_widget="TextField", - props=dict( - label="Supported operating system", - icon="laptop", - description="Supported operating systems.", - placeholder="Windows 7, OSX 10.6, Android 1.6 ...", - ), - ), - dict( - field="code:developmentStatus", - ui_widget="Dropdown", - props=dict( - label="Development status", - placeholder="", - icon="heartbeat", - description="Repository current status", - search=False, - multiple=False, - clearable=True, - ), - ), - ], -} diff --git a/site/tests/fixtures/roles.py b/site/tests/fixtures/roles.py deleted file mode 100644 index 7ae547a4d..000000000 --- a/site/tests/fixtures/roles.py +++ /dev/null @@ -1,9 +0,0 @@ -import pytest -from invenio_accounts.proxies import current_accounts - - -@pytest.fixture(scope="module") -def admin_roles(): - current_accounts.datastore.create_role(name="admin-moderator") - current_accounts.datastore.create_role(name="administration") - current_accounts.datastore.create_role(name="administration-moderation") diff --git a/site/tests/ui/conftest.py b/site/tests/ui/conftest.py deleted file mode 100644 index 9efd3cbf1..000000000 --- a/site/tests/ui/conftest.py +++ /dev/null @@ -1,12 +0,0 @@ -# ### tests/ui/conftest.py ### -# UI tests goes in tests/ui/ folder. -# from invenio_app.factory import create_ui -# import pytest - -# @pytest.fixture(scope='module') -# def app_config(app_config): -# return app_config - -# @pytest.fixture(scope='module') -# def create_app(): -# return create_ui diff --git a/site/tests/api/__init__.py b/tests/__init__.py similarity index 100% rename from site/tests/api/__init__.py rename to tests/__init__.py diff --git a/site/tests/fixtures/__init__.py b/tests/api/__init__.py similarity index 100% rename from site/tests/fixtures/__init__.py rename to tests/api/__init__.py diff --git a/site/tests/api/conftest.py b/tests/api/conftest.py similarity index 69% rename from site/tests/api/conftest.py rename to tests/api/conftest.py index 4be031308..2b61f876a 100644 --- a/site/tests/api/conftest.py +++ b/tests/api/conftest.py @@ -1,12 +1,12 @@ -# ### tests/api/confest.py ### -# API tests goes in tests/api/ folder. -# from pprint import pprint -import pytest - -from invenio_app.factory import create_api +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. -# from pytest_invenio.fixtures import UserFixture, database, db +"""Pytest configuration for API tests.""" +import pytest # @pytest.fixture(scope="module") # def create_app(): diff --git a/site/tests/api/test_accounts.py b/tests/api/test_accounts.py similarity index 93% rename from site/tests/api/test_accounts.py rename to tests/api/test_accounts.py index c3442f2da..82bbfdad0 100644 --- a/site/tests/api/test_accounts.py +++ b/tests/api/test_accounts.py @@ -1,24 +1,31 @@ -from pprint import pformat -import pytest +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Integration tests for the accounts API.""" import datetime +import json +from collections.abc import Callable +from types import SimpleNamespace + +import pytest +import pytz from flask import Flask from invenio_accounts import current_accounts from invenio_accounts.models import User from invenio_record_importer_kcworks.services.users import UsersHelper -import json from kcworks.services.accounts.saml import ( + acs_handler_factory, + knowledgeCommons_account_get_user, knowledgeCommons_account_info, knowledgeCommons_account_setup, - knowledgeCommons_account_get_user, - acs_handler_factory, ) -import pytz from requests_mock.adapter import _Matcher as Matcher -from types import SimpleNamespace -from typing import Callable, Optional from ..fixtures.saml import idp_responses -from ..fixtures.users import user_data_set, AugmentedUserFixture +from ..fixtures.users import AugmentedUserFixture, user_data_set @pytest.mark.parametrize( @@ -61,10 +68,7 @@ def test_knowledgeCommons_account_info( mock_user_data_api: Callable, user_data_to_remote_data: Callable, ) -> None: - """ - Test the custom handler - """ - + """Test the custom handler for the knowledgeCommons account info.""" mock_adapter: Matcher = mock_user_data_api( user_data["saml_id"], user_data_to_remote_data(user_data["saml_id"], user_data["email"], user_data), @@ -178,16 +182,12 @@ def test_knowledgeCommons_account_get_user( mock_user_data_api: Callable, user_data_to_remote_data: Callable, ) -> None: - """ - Test the account get user function, which should match a SAML login based on - either email or ORCID. + """Test that account_get_user matches a SAML login based on either email or ORCID. case 1: The pre-existing KCWorks user has the same email as the IDP response case 2: The pre-existing KCWorks user has a different email as the IDP response case 3: The KCWorks user is already linked to an external ID """ - app: Flask = running_app.app - if not already_linked: u: AugmentedUserFixture = user_factory( email=original_email, @@ -206,10 +206,8 @@ def test_knowledgeCommons_account_get_user( new_remote_data=user_data, ) assert u.user is not None - app.logger.debug(f"user profile: {u.user.user_profile}") - matched_user: Optional[User] = knowledgeCommons_account_get_user(idp_data) - app.logger.debug(f"matched user: {pformat(matched_user)}") + matched_user: User | None = knowledgeCommons_account_get_user(idp_data) if user_expected: assert matched_user is not None @@ -249,13 +247,11 @@ def test_knowledgeCommons_account_setup( idp_data: dict, search_clear: Callable, ) -> None: - """ - Test the account setup function + """Test that account_setup links the user with the IDP. Test that the user is activated and the user data is updated in the db based on the data from the (mocked) remote service api call. """ - u: AugmentedUserFixture = user_factory( email=user_data["email"], password="password", @@ -264,7 +260,7 @@ def test_knowledgeCommons_account_setup( new_remote_data=user_data, ) assert isinstance(u.user, User) - mock_adapter: Optional[Matcher] = u.mock_adapter + mock_adapter: Matcher | None = u.mock_adapter assert isinstance(mock_adapter, Matcher) # Ensure that any group roles are being added by the setup function assert u.user.roles == [] @@ -335,8 +331,7 @@ def test_account_register_on_login( celery_worker, search_clear: Callable, ) -> None: - """ - Test the registration function if a user is not already registered. + """Test that account_register_on_login creates a new user from SAML data. Tests that: - The new user is created from SAML data @@ -401,8 +396,8 @@ def test_account_register_on_login( if "groups" in user_data.keys() else [] ) - assert all([r for r in user.roles if r.name in expected_roles]) - assert not any([r for r in user.roles if r.name not in expected_roles]) + assert all(r for r in user.roles if r.name in expected_roles) + assert not any(r for r in user.roles if r.name not in expected_roles) assert next_url == "https://localhost/next-url.com" @@ -415,12 +410,10 @@ def test_create_user_via_importer( celery_worker, search_clear: Callable, ) -> None: - """ - Test the creation of a user programmatically via the importer. + """Test the creation of a user programmatically via the importer. Among other things, test that the correct welcome email is sent to the user. """ - app: Flask = running_app.app user = UsersHelper().create_invenio_user( user_email="test@example.com", full_name="Test User", diff --git a/site/tests/api/test_api_import.py b/tests/api/test_api_import.py similarity index 94% rename from site/tests/api/test_api_import.py rename to tests/api/test_api_import.py index 53a6d036b..25c602cf3 100644 --- a/site/tests/api/test_api_import.py +++ b/tests/api/test_api_import.py @@ -1,4 +1,18 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Integration tests for the API record import.""" + import copy +import json +import re +import sys +from pathlib import Path +from pprint import pformat + from flask_login import login_user from invenio_access.permissions import authenticated_user, system_identity from invenio_access.utils import get_identity @@ -9,35 +23,29 @@ from invenio_rdm_records.proxies import current_rdm_records_service as records_service from invenio_record_importer_kcworks.proxies import current_record_importer_service from invenio_record_importer_kcworks.record_loader import RecordLoader -from invenio_record_importer_kcworks.types import ( - FileData, - LoaderResult, -) +from invenio_record_importer_kcworks.types import FileData, LoaderResult from invenio_vocabularies.proxies import current_service as current_vocabulary_service from invenio_vocabularies.records.api import Vocabulary -import json -from pathlib import Path -from pprint import pformat -import re -import sys -from typing import Optional + from ..fixtures.communities import make_community_member from ..fixtures.files import file_md5 from ..fixtures.records import TestRecordMetadata, TestRecordMetadataWithFiles from ..helpers.sample_records import ( - sample_metadata_chapter_pdf, sample_metadata_chapter2_pdf, - # sample_metadata_chapter3_pdf, - # sample_metadata_chapter4_pdf, - # sample_metadata_chapter5_pdf, - # sample_metadata_conference_proceedings_pdf, - # sample_metadata_interview_transcript_pdf, - sample_metadata_journal_article_pdf, + sample_metadata_chapter_pdf, sample_metadata_journal_article2_pdf, - # sample_metadata_thesis_pdf, - # sample_metadata_white_paper_pdf, + sample_metadata_journal_article_pdf, ) +# TODO: Add tests for the other sample records +# sample_metadata_chapter3_pdf, +# sample_metadata_chapter4_pdf, +# sample_metadata_chapter5_pdf, +# sample_metadata_conference_proceedings_pdf, +# sample_metadata_interview_transcript_pdf, +# sample_metadata_thesis_pdf, +# sample_metadata_white_paper_pdf, + class BaseImportLoaderTest: """Base class for testing record imports with different metadata sources.""" @@ -249,6 +257,7 @@ def test_import_records_loader_load( celery_worker, mailbox, ): + """Test that a record can be imported via the API.""" app = running_app.app # find the resource type id for "textDocument" @@ -357,9 +366,10 @@ def test_import_records_loader_load( class TestImportLoaderJArticle(BaseImportLoaderTest): + """Test importing a journal article.""" @property - def metadata_source(self): + def metadata_source(self): # noqa: D102 return copy.deepcopy(sample_metadata_journal_article_pdf["input"]) @@ -391,14 +401,13 @@ class TestImportLoaderJArticleErrorTitle(BaseImportLoaderErrorTest): """Test importing a journal article with an empty title.""" @property - def metadata_source(self): + def metadata_source(self): # noqa: D102 return copy.deepcopy(sample_metadata_journal_article_pdf["input"]) - def modify_metadata(self, test_metadata: TestRecordMetadata): + def modify_metadata(self, test_metadata: TestRecordMetadata): # noqa: D102 test_metadata.update_metadata({"metadata|title": ""}) - def check_result_errors(self, result: LoaderResult): - """Check the errors of the result.""" + def check_result_errors(self, result: LoaderResult): # noqa: D102 assert result.errors == [ { "validation_error": { @@ -412,10 +421,10 @@ class TestImportLoaderJArticleErrorIDScheme(BaseImportLoaderErrorTest): """Test importing a journal article with an empty title.""" @property - def metadata_source(self): + def metadata_source(self): # noqa: D102 return copy.deepcopy(sample_metadata_journal_article_pdf["input"]) - def modify_metadata(self, test_metadata: TestRecordMetadata): + def modify_metadata(self, test_metadata: TestRecordMetadata): # noqa: D102 test_metadata.update_metadata( { "metadata|identifiers": [ @@ -425,8 +434,7 @@ def modify_metadata(self, test_metadata: TestRecordMetadata): } ) - def check_result_errors(self, result: LoaderResult): - """Check the errors of the result.""" + def check_result_errors(self, result: LoaderResult): # noqa: D102 assert result.errors == [ { "validation_error": { @@ -466,6 +474,7 @@ def test_import_records_loader_load( celery_worker, mailbox, ): + """Test importing a record with files.""" app = running_app.app # find the resource type id for "textDocument" @@ -615,9 +624,7 @@ def test_import_records_loader_load( assert result.source_id # now check the record in the database/search - rdm_record = records_service.read( - system_identity, id_=record_created_id - ).to_dict() + records_service.read(system_identity, id_=record_created_id).to_dict() expected_record_files = copy.deepcopy(test_metadata.published["files"]) # FIXME: There's an inconsistency in file metadata between test runs @@ -685,8 +692,10 @@ def test_import_records_loader_load( class TestImportLoaderWithFilesJArticle(BaseImportLoaderWithFilesTest): + """Test importing a journal article with files.""" + @property - def metadata_source(self): + def metadata_source(self): # noqa: D102 return copy.deepcopy(sample_metadata_journal_article_pdf["input"]) @@ -694,14 +703,14 @@ class BaseImportServiceTest: """Base class for testing record imports with the service.""" @property - def by_api(self): + def by_api(self): # noqa: D102 return False @property - def community_access_override(self): + def community_access_override(self): # noqa: D102 return {} - def make_submitter(self, user_factory, community_id): + def make_submitter(self, user_factory, community_id): # noqa: D102 return None, None @property @@ -715,7 +724,6 @@ def files_to_upload(self): The default defined here assumes two input records with two files each. """ - file_paths = [ Path(__file__).parent.parent.parent / "tests/helpers/sample_files/sample.pdf", @@ -809,7 +817,7 @@ def expected_errors(self): return [[]] * len(self.metadata_sources) def check_result_status( - self, import_results: dict, status_code: Optional[int] + self, import_results: dict, status_code: int | None ) -> bool: """Check the status of the import results. @@ -819,7 +827,7 @@ def check_result_status( test execution if the status reflects a response that will lack a body with data or errors (e.g., 403). """ - if not any([e for e in self.expected_errors if e]): + if not any(e for e in self.expected_errors if e): if self.by_api: assert status_code == 201 assert len(import_results["data"]) == len(self.metadata_sources) @@ -858,7 +866,8 @@ def _check_response_files(self, actual_files, record_files): } def check_result_errors(self, import_results: dict) -> None: - if not any([e for e in self.expected_errors if e]): + """Check the errors of the import results.""" + if not any(e for e in self.expected_errors if e): assert import_results.get("errors") == [] return error_item_indices = [ @@ -927,7 +936,9 @@ def _check_owners( "owned_by" ][1:] other_actual_owners = actual_metadata["parent"]["access"]["grants"] - for oe, oa in zip(other_expected_owners, other_actual_owners): + for oe, oa in zip( + other_expected_owners, other_actual_owners, strict=False + ): user = current_accounts.datastore.get_user_by_email(oe["email"]) assert oa["subject"]["id"] == str(user.id) assert user.email == oe["email"] @@ -988,12 +999,6 @@ def _check_owners( community_members, user, int(uploader_id) ) - self.app.logger.debug( - f"mailbox: {pformat([m.recipients for m in mailbox])}" - ) - self.app.logger.debug( - f"mailbox: {pformat([email.body for email in mailbox])}" - ) # multiple records created with the one mailbox if not self.by_api: # can't detect async email sending in test mails_for_record = [ @@ -1130,6 +1135,7 @@ def check_result_data( mailbox, mocker, ) -> None: + """Check the data of the import results.""" assert self.app expected_error_count = len([e for e in self.expected_errors if e]) if expected_error_count > 0: @@ -1167,7 +1173,7 @@ def _do_api_import( file_streams: list, token: str, metadata_source_objects: list[TestRecordMetadataWithFiles], - ) -> tuple[Optional[dict], int]: + ) -> tuple[dict | None, int]: assert self.app with self.app.test_client() as client: actual_response = client.post( @@ -1203,6 +1209,7 @@ def test_import_records_service_load( mailbox, mocker, ): + """Test importing a record via the service.""" self.app = running_app.app u = user_factory(email="test@example.com", token=True, saml_id=None) user_id = u.user.id @@ -1304,8 +1311,10 @@ def test_import_records_service_load( class TestImportServiceJArticleSuccess(BaseImportServiceTest): + """Test importing two journal articles with no errors.""" + @property - def metadata_sources(self): + def metadata_sources(self): # noqa: D102 return [ copy.deepcopy(sample_metadata_journal_article_pdf["input"]), copy.deepcopy(sample_metadata_journal_article2_pdf["input"]), @@ -1313,15 +1322,17 @@ def metadata_sources(self): class TestImportServiceJArticleErrorTitle(BaseImportServiceTest): + """Test importing two journal articles with an error in the title.""" + @property - def metadata_sources(self): + def metadata_sources(self): # noqa: D102 meta1 = copy.deepcopy(sample_metadata_chapter_pdf["input"]) meta1["metadata"]["title"] = "" meta2 = copy.deepcopy(sample_metadata_chapter2_pdf["input"]) return [meta1, meta2] @property - def expected_errors(self): + def expected_errors(self): # noqa: D102 return [ [ { @@ -1335,8 +1346,10 @@ def expected_errors(self): class TestImportServiceJArticleErrorMissingFile(BaseImportServiceTest): + """Test importing two journal articles with an error in the file.""" + @property - def metadata_sources(self): + def metadata_sources(self): # noqa: D102 meta1 = copy.deepcopy(sample_metadata_chapter_pdf["input"]) meta1["metadata"]["title"] = "" meta2 = copy.deepcopy(sample_metadata_chapter2_pdf["input"]) @@ -1359,10 +1372,7 @@ def files_to_upload(self): @property def expected_errors(self): - """ - The first record should fail because the file is missing. - The second record should fail because the metadata is invalid. - """ + """The first file is missing, second has invalid metadata.""" return [ [ { @@ -1381,11 +1391,11 @@ class TestImportAPIJArticleSuccess(BaseImportServiceTest): """Test importing two journal articles via the API with no errors.""" @property - def by_api(self): + def by_api(self): # noqa: D102 return True @property - def metadata_sources(self): + def metadata_sources(self): # noqa: D102 return [ copy.deepcopy(sample_metadata_journal_article_pdf["input"]), copy.deepcopy(sample_metadata_journal_article2_pdf["input"]), @@ -1395,7 +1405,8 @@ def metadata_sources(self): class BaseInsufficientPermissionsTest(TestImportAPIJArticleSuccess): """Base class for tests that check the API with insufficient permissions.""" - def check_result_status(self, import_results: dict, status_code: Optional[int]): + def check_result_status(self, import_results: dict, status_code: int | None): + """Check the status code of the import results.""" if self.by_api: assert status_code == 403 assert import_results.get("message") == ( @@ -1413,7 +1424,7 @@ class TestImportAPIInsufficientPermissionsReader(BaseInsufficientPermissionsTest """ @property - def community_access_override(self): + def community_access_override(self): # noqa: D102 return {"review_policy": "open", "record_policy": "open"} def make_submitter(self, user_factory, community_id): @@ -1431,7 +1442,7 @@ class TestImportAPIInsufficientPermissionsCurator(BaseInsufficientPermissionsTes """ @property - def community_access_override(self): + def community_access_override(self): # noqa: D102 return {"review_policy": "closed", "record_policy": "closed"} def make_submitter(self, user_factory, community_id): @@ -1449,7 +1460,7 @@ class TestImportAPIInsufficientPermissionsOwner(BaseInsufficientPermissionsTest) """ @property - def community_access_override(self): + def community_access_override(self): # noqa: D102 return {"review_policy": "open", "record_policy": "open"} def make_submitter(self, user_factory, community_id): @@ -1459,12 +1470,16 @@ def make_submitter(self, user_factory, community_id): class TestImportAPIJArticleErrorTitle(TestImportServiceJArticleErrorTitle): + """Test importing two journal articles with an error in the title via the API.""" + @property - def by_api(self): + def by_api(self): # noqa: D102 return True class TestImportAPIJArticleErrorMissingFile(TestImportServiceJArticleErrorMissingFile): + """Test importing two journal articles with an error in the file via the API.""" + @property - def by_api(self): + def by_api(self): # noqa: D102 return True diff --git a/site/tests/api/test_api_notifications.py b/tests/api/test_api_notifications.py similarity index 96% rename from site/tests/api/test_api_notifications.py rename to tests/api/test_api_notifications.py index 2ad1ec284..136a07df4 100644 --- a/site/tests/api/test_api_notifications.py +++ b/tests/api/test_api_notifications.py @@ -1,30 +1,36 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Integration tests for notifications.""" + +import json +import time +from pprint import pformat + import pytest from flask_security import current_user from flask_security.utils import login_user, logout_user -import json -from invenio_access.permissions import system_identity, SystemRoleNeed +from invenio_access.permissions import SystemRoleNeed, system_identity from invenio_access.utils import get_identity from invenio_accounts.proxies import current_accounts from invenio_accounts.testutils import login_user_via_session from invenio_communities.utils import load_community_needs -from invenio_requests.customizations.event_types import ( - CommentEventType, -) -from invenio_requests.records.api import RequestEvent +from invenio_rdm_records.proxies import current_rdm_records_service as records_service +from invenio_rdm_records.records.api import RDMDraft +from invenio_records_resources.services.errors import PermissionDeniedError +from invenio_requests.customizations.event_types import CommentEventType from invenio_requests.proxies import ( - current_requests_service, current_events_service, + current_requests_service, ) -from invenio_rdm_records.proxies import ( - current_rdm_records_service as records_service, -) -from invenio_rdm_records.records.api import RDMDraft -from invenio_records_resources.services.errors import PermissionDeniedError +from invenio_requests.records.api import RequestEvent from invenio_users_resources.records.api import UserAggregate from invenio_users_resources.services.users.tasks import reindex_users from kcworks.proxies import current_internal_notifications -from pprint import pformat -import time + from ..fixtures.records import TestRecordMetadata @@ -42,9 +48,9 @@ def test_notify_for_request_acceptance( celery_worker, mocker, mock_send_remote_api_update_fixture, + enable_mail_sending, ): - """ - Test that the user is notified when a collection submission is accepted. + """Test that the user is notified when a collection submission is accepted. This integration test uses actual requests and events, and uses a live asynchronous celery worker to send the notifications. Mail actually passes @@ -59,7 +65,6 @@ def test_notify_for_request_acceptance( admin_id = admin.user.id community_rec = minimal_community_factory(owner=admin_id) community_meta = community_rec.to_dict() - app.logger.debug(f"community_meta: {pformat(community_meta)}") assert len(mailbox) == 0 # Create a user with a community submission @@ -255,9 +260,9 @@ def test_notify_for_request_decline( mocker, celery_worker, mock_send_remote_api_update_fixture, + enable_mail_sending, ): - """ - Test that the user is notified when a request is declined. + """Test that the user is notified when a request is declined. This integration test uses actual requests and events, and uses a live asynchronous celery worker to send the notifications. Mail actually passes @@ -268,7 +273,6 @@ def test_notify_for_request_decline( We patch the `send_remote_api_update` method to avoid actually sending the search provisioning api message during record publication. """ - app = running_app.app admin_id = admin.user.id community_rec = minimal_community_factory(owner=admin_id) @@ -466,10 +470,9 @@ def test_notify_for_request_cancellation( mailbox, celery_worker, mock_send_remote_api_update_fixture, + enable_mail_sending, ): - """ - Test that the user is notified when a request is cancelled. - """ + """Test that the user is notified when a request is cancelled.""" app = running_app.app admin_id = admin.user.id community_rec = minimal_community_factory(owner=admin_id) @@ -646,10 +649,9 @@ def test_notify_for_new_request_comment( mailbox, celery_worker, mock_send_remote_api_update_fixture, + enable_mail_sending, ): - """ - Test that the user is notified when a new comment is added - """ + """Test that the user is notified when a new comment is added.""" app = running_app.app admin_id = admin.user.id community_rec = minimal_community_factory(owner=admin_id) @@ -844,11 +846,7 @@ def test_read_unread_notifications_by_service( headers, search_clear, ): - """ - Test that the user's unread notifications are read by the service. - """ - - # create a user with a community submission + """Test that the user's unread notifications are read by the service.""" u = user_factory( email="test@example.com", password="test", @@ -922,13 +920,11 @@ def test_clear_unread_notifications_by_service( search_clear, admin, mailbox, + enable_mail_sending, ): - """ - Test that the user's unread notifications are cleared by the api call. - """ + """Test that the user's unread notifications are cleared by the api call.""" admin_id = admin.user.id - # create a user with a community submission u = user_factory( email="test@example.com", password="test", @@ -1039,9 +1035,7 @@ def test_read_unread_notifications_by_view( admin, search_clear, ): - """ - Test that the user's unread notifications are read by the view. - """ + """Test that the user's unread notifications are read by the view.""" app = running_app.app admin_id = admin.user.id # create a user with a community submission @@ -1136,10 +1130,9 @@ def test_clear_unread_notifications_by_view( search_clear, admin, mailbox, + enable_mail_sending, ): - """ - Test that the user's unread notifications are cleared by the api call. - """ + """Test that the user's unread notifications are cleared by the view.""" app = running_app.app admin_id = admin.user.id @@ -1243,10 +1236,9 @@ def test_clear_one_unread_notification_by_view( search_clear, admin, mailbox, + enable_mail_sending, ): - """ - Test that the user's unread notifications are cleared by the api call. - """ + """Test that the user's unread notifications are cleared by the api call.""" app = running_app.app # create a user with a community submission @@ -1327,9 +1319,7 @@ def test_clear_one_unread_notification_by_view( def test_unread_endpoint_bad_methods( running_app, db, client, admin, headers_same_origin ): - """ - Test that the unread notifications endpoint does not allow bad methods. - """ + """Test that the unread notifications endpoint does not allow bad methods.""" app = running_app.app admin_id = admin.user.id admin_email = admin.user.email @@ -1406,9 +1396,9 @@ def test_notification_on_first_upload( mailbox, celery_worker, mock_send_remote_api_update_fixture, + enable_mail_sending, ): - """ - Test that the admin account is notified on a user's first upload. + """Test that the admin account is notified on a user's first upload. Ensure that a notification of the type "user-first-record.created" (built by kcworks.services.notifications.builders. @@ -1489,8 +1479,8 @@ def test_notification_on_first_upload( ) # fmt: on assert f"Draft title: {metadata.draft['metadata']['title']}" in email.body assert ( - f"Draft title\n {metadata.draft['metadata']['title']}" - in email.html + f"Draft title\n " + f"{metadata.draft['metadata']['title']}" in email.html ) assert f"User ID: {user_id}" in email.body assert f"User ID\n {user_id}" in email.html diff --git a/site/tests/api/test_api_record_ops.py b/tests/api/test_api_record_ops.py similarity index 67% rename from site/tests/api/test_api_record_ops.py rename to tests/api/test_api_record_ops.py index 3179c28c5..56d1557ae 100644 --- a/site/tests/api/test_api_record_ops.py +++ b/tests/api/test_api_record_ops.py @@ -1,259 +1,247 @@ -import pytest -import arrow -from datetime import timedelta +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. -# import hashlib -from invenio_access.permissions import authenticated_user, system_identity -from invenio_access.utils import get_identity +"""Integration tests for the API record operations.""" -# from invenio_files_rest.helpers import compute_checksum -from invenio_rdm_records.proxies import current_rdm_records_service as records_service +import copy import json +import re +from collections.abc import Callable +from datetime import timedelta from pathlib import Path from pprint import pformat -import re -from ..fixtures.users import user_data_set + +import arrow +import pytest +from flask_login import login_user +from flask_sqlalchemy import SQLAlchemy +from invenio_access.permissions import authenticated_user, system_identity +from invenio_access.utils import get_identity +from invenio_rdm_records.proxies import current_rdm_records_service as records_service + +from tests.conftest import RunningApp + from ..fixtures.records import TestRecordMetadata, TestRecordMetadataWithFiles +from ..fixtures.users import user_data_set +from ..helpers.sample_records import ( + sample_metadata_book_pdf, +) -def test_draft_creation_api( - running_app, - db, - user_factory, - client_with_login, - headers, - search_clear, - celery_worker, -): +class TestDraftCreation: """Test that a user can create a draft record.""" - app = running_app.app - - u = user_factory( - email=user_data_set["user1"]["email"], - token=True, - ) - user = u.user - token = u.allowed_token - metadata = TestRecordMetadata(app=app) + @property + def metadata_source(self) -> dict: + """Input metadata to use to create the draft record. + + If this is an empty dictionary, default minimal metadata will be used. + """ + return {} + + @property + def errors(self) -> list[dict]: + """Errors to expect in the response metadata. + + These errors are expected to be present in the actual metadata due to the + validation errors. + """ + return [] + + @property + def skip_fields(self) -> list[str]: + """List of fields to skip when comparing the draft metadata. + + These fields are expected to be missing from the actual metadata due to the + validation errors. + """ + return [] + + def test_draft_creation_api( + self, + running_app: RunningApp, + db: SQLAlchemy, + user_factory: Callable, + client_with_login: Callable, + headers: dict, + record_metadata: Callable, + search_clear: Callable, + celery_worker: Callable, + ): + """Test that a user can create a draft record.""" + app = running_app.app + + u = user_factory( + email=user_data_set["user1"]["email"], + token=True, + ) + user = u.user + token = u.allowed_token - with app.test_client() as client: - logged_in_client = client_with_login(client, user) - response = logged_in_client.post( - f"{app.config['SITE_API_URL']}/records", - data=json.dumps(metadata.metadata_in), - headers={**headers, "Authorization": f"Bearer {token}"}, + metadata = record_metadata( + metadata_in=self.metadata_source, + owner_id=user.id, ) - assert response.status_code == 201 - actual_draft = response.json - app.logger.debug(f"actual_draft: {pformat(actual_draft)}") - actual_draft_id = actual_draft["id"] + with app.test_client() as client: + logged_in_client = client_with_login(client, user) + response = logged_in_client.post( + f"{app.config['SITE_API_URL']}/records", + data=json.dumps(metadata.metadata_in), + headers={**headers, "Authorization": f"Bearer {token}"}, + ) + assert response.status_code == 201 + + actual_draft = response.json + app.logger.debug(f"actual_draft: {pformat(actual_draft)}") - # ensure the id is in the correct format - assert re.match(r"^[a-z0-9]{5}-[a-z0-9]{5}$", actual_draft_id) - # ensure the created and updated dates are valid ISO-8601 - assert ( - arrow.get(actual_draft["created"]).format( - "YYYY-MM-DDTHH:mm:ss.SSSSSS+00:00" + if self.errors or "errors" in actual_draft.keys(): + assert actual_draft["errors"] == self.errors + assert metadata.compare_draft( + actual_draft, by_api=True, skip_fields=self.skip_fields ) - == actual_draft["created"] + + # TODO: UI field only present in object sent to jinja template + # we need to test that the jinja template is working correctly + # + # assert actual_draft["ui"][ + # "publication_date_l10n_medium" + # ] == publication_date.format("MMM D, YYYY") + # assert actual_draft["ui"][ + # "publication_date_l10n_long" + # ] == publication_date.format("MMMM D, YYYY") + # created_date = arrow.get(actual_draft["created"]) + # assert actual_draft["ui"]["created_date_l10n_long"] == created_date.format( + # "MMMM D, YYYY" + # ) + # updated_date = arrow.get(actual_draft["updated"]) + # assert actual_draft["ui"]["updated_date_l10n_long"] == updated_date.format( + # "MMMM D, YYYY" + # ) + # assert actual_draft["ui"]["resource_type"] == { + # "id": "image-photograph", + # "title_l10n": "Photo", + # } + # assert actual_draft["ui"]["custom_fields"] == {} + # assert actual_draft["ui"]["access_status"] == { + # "id": "metadata-only", + # "title_l10n": "Metadata-only", + # "description_l10n": "No files are available for this record.", + # "icon": "tag", + # "embargo_date_l10n": None, + # "message_class": "", + # } + # assert actual_draft["ui"]["creators"] == { + # "affiliations": [], + # "creators": [ + # { + # "person_or_org": { + # "type": "personal", + # "name": "Brown, Troy", + # "given_name": "Troy", + # "family_name": "Brown", + # } + # }, + # { + # "person_or_org": { + # "type": "organizational", + # "name": "Troy Inc.", + # } + # }, + # ], + # } + # assert actual_draft["ui"]["version"] == "v1" + # assert actual_draft["ui"]["is_draft"] + + def test_draft_creation_service( + self, + running_app: RunningApp, + db: SQLAlchemy, + client_with_login: Callable, + headers: dict, + user_factory: Callable, + record_metadata: Callable, + search_clear: Callable, + celery_worker: Callable, + minimal_draft_record_factory: Callable, + ): + """Test that a system user can create a draft record internally. + + Checks that the created record metadata structure is correct for + the input metadata. Checks the same fields as the `test_draft_creation_api` + test. + """ + u = user_factory( + email=user_data_set["user1"]["email"], ) - assert ( - arrow.get(actual_draft["updated"]).format( - "YYYY-MM-DDTHH:mm:ss.SSSSSS+00:00" - ) - == actual_draft["updated"] + user_id = u.user.id + login_user(u.user) + + metadata = record_metadata(metadata_in=self.metadata_source, owner_id=user_id) + result = minimal_draft_record_factory(metadata=metadata.metadata_in) + actual_draft = result.to_dict() + running_app.app.logger.debug(f"actual_draft: {pformat(actual_draft)}") + running_app.app.logger.info(f"actual_draft: {pformat(actual_draft)}") + running_app.app.logger.warning(f"actual_draft: {pformat(actual_draft)}") + assert metadata.compare_draft( + actual_draft, by_api=False, skip_fields=self.skip_fields ) + if "errors" in actual_draft.keys() or self.errors: + assert actual_draft["errors"] == self.errors - assert actual_draft["links"] == TestRecordMetadata.build_draft_record_links( - actual_draft_id, app.config["SITE_API_URL"], app.config["SITE_UI_URL"] - ) + read_result = records_service.read_draft(system_identity, actual_draft["id"]) + actual_read = read_result.to_dict() + assert actual_read["id"] == actual_draft["id"] - # assert actual_draft['revision_id'] == 5 # TODO: Why is this 5? - - actual_parent_id = actual_draft["parent"]["id"] - assert re.match(r"^[a-z0-9]{5}-[a-z0-9]{5}$", actual_parent_id) - assert actual_draft["parent"]["access"] == { - "grants": [], - "owned_by": {"user": "1"}, - "links": [], - "settings": { - "allow_user_requests": False, - "allow_guest_requests": False, - "accept_conditions_text": None, - "secret_link_expiration": 0, - }, - } - assert actual_draft["parent"]["communities"] == {} - assert actual_draft["parent"]["pids"] == {} - assert actual_draft["versions"] == { - "is_latest": False, - "is_latest_draft": True, - "index": 1, - } - assert not actual_draft["is_published"] - assert actual_draft["is_draft"] - assert ( - arrow.get(actual_draft["expires_at"]).format("YYYY-MM-DD HH:mm:ss.SSSSSS") - == actual_draft["expires_at"] - ) - assert actual_draft["pids"] == {} - assert actual_draft["metadata"]["resource_type"] == { - "id": "image-photograph", - "title": {"en": "Photo"}, - } - assert actual_draft["metadata"]["creators"] == [ +class TestDraftCreationError(TestDraftCreation): + """Test that creating a draft record with invalid metadata returns errors. + + The errors are returned in the response metadata object's "errors" field. + """ + + @property + def metadata_source(self) -> dict: # noqa: D102 + metadata = copy.deepcopy(sample_metadata_book_pdf["input"]) + metadata["metadata"]["title"] = "" + metadata["metadata"]["resource_type"] = None + del metadata["metadata"]["publication_date"] + return metadata + + @property + def errors(self) -> list[dict]: # noqa: D102 + return [ + {"field": "metadata.resource_type", "messages": ["Field may not be null."]}, { - "person_or_org": { - "type": "personal", - "name": "Brown, Troy", - "given_name": "Troy", - "family_name": "Brown", - } + "field": "metadata.title", + "messages": ["Title cannot be a blank string."], }, - {"person_or_org": {"type": "organizational", "name": "Troy Inc."}}, + { + "field": "metadata.publication_date", + "messages": ["Missing data for required field."], + }, + {"field": "metadata.rights.0.icon", "messages": ["Unknown field."]}, ] - assert actual_draft["metadata"]["title"] == "A Romans story" - assert actual_draft["metadata"]["publisher"] == "Acme Inc" - assert ( - arrow.get(actual_draft["metadata"]["publication_date"]).format("YYYY-MM-DD") - == "2020-06-01" - ) - assert actual_draft["custom_fields"] == {} - assert actual_draft["access"] == { - "record": "public", - "files": "public", - "embargo": {"active": False, "reason": None}, - "status": "metadata-only", - } - assert actual_draft["files"] == { - "enabled": False, - "order": [], - "count": 0, - "total_bytes": 0, - "entries": {}, - } - assert actual_draft["media_files"] == { - "enabled": False, - "order": [], - "count": 0, - "total_bytes": 0, - "entries": {}, - } - assert actual_draft["status"] == "draft" - # publication_date = arrow.get(actual_draft["metadata"]["publication_date"]) - - # TODO: UI field only present in object sent to jinja template - # we need to test that the jinja template is working correctly - # - # assert actual_draft["ui"][ - # "publication_date_l10n_medium" - # ] == publication_date.format("MMM D, YYYY") - # assert actual_draft["ui"][ - # "publication_date_l10n_long" - # ] == publication_date.format("MMMM D, YYYY") - # created_date = arrow.get(actual_draft["created"]) - # assert actual_draft["ui"]["created_date_l10n_long"] == created_date.format( - # "MMMM D, YYYY" - # ) - # updated_date = arrow.get(actual_draft["updated"]) - # assert actual_draft["ui"]["updated_date_l10n_long"] == updated_date.format( - # "MMMM D, YYYY" - # ) - # assert actual_draft["ui"]["resource_type"] == { - # "id": "image-photograph", - # "title_l10n": "Photo", - # } - # assert actual_draft["ui"]["custom_fields"] == {} - # assert actual_draft["ui"]["access_status"] == { - # "id": "metadata-only", - # "title_l10n": "Metadata-only", - # "description_l10n": "No files are available for this record.", - # "icon": "tag", - # "embargo_date_l10n": None, - # "message_class": "", - # } - # assert actual_draft["ui"]["creators"] == { - # "affiliations": [], - # "creators": [ - # { - # "person_or_org": { - # "type": "personal", - # "name": "Brown, Troy", - # "given_name": "Troy", - # "family_name": "Brown", - # } - # }, - # { - # "person_or_org": { - # "type": "organizational", - # "name": "Troy Inc.", - # } - # }, - # ], - # } - # assert actual_draft["ui"]["version"] == "v1" - # assert actual_draft["ui"]["is_draft"] - - -def test_draft_creation_service( - running_app, - db, - client_with_login, - headers, - user_factory, - search_clear, - celery_worker, - minimal_draft_record_factory, -): - app = running_app.app - metadata = TestRecordMetadata(app=app) - result = minimal_draft_record_factory(metadata=metadata.metadata_in) - actual_draft = result.to_dict() - app.logger.debug(f"actual_draft: {pformat(actual_draft)}") - assert actual_draft["is_draft"] - assert not actual_draft["is_published"] - assert not actual_draft["versions"]["is_latest"] # TODO: Why is this False? - assert actual_draft["versions"]["is_latest_draft"] is True - assert actual_draft["versions"]["index"] == 1 - assert actual_draft["status"] == "draft" - assert actual_draft["files"]["enabled"] is False - assert actual_draft["files"]["entries"] == {} - assert ( - actual_draft["metadata"]["creators"] == metadata.draft["metadata"]["creators"] - ) - assert ( - actual_draft["metadata"]["publisher"] == metadata.draft["metadata"]["publisher"] - ) - assert ( - actual_draft["metadata"]["publication_date"] - == metadata.draft["metadata"]["publication_date"] - ) - assert ( - actual_draft["metadata"]["resource_type"]["id"] - == metadata.draft["metadata"]["resource_type"]["id"] - ) - assert actual_draft["metadata"]["title"] == metadata.draft["metadata"]["title"] - read_result = records_service.read_draft(system_identity, actual_draft["id"]) - actual_read = read_result.to_dict() - assert actual_read["id"] == actual_draft["id"] - assert actual_read["metadata"]["title"] == actual_draft["metadata"]["title"] + @property + def skip_fields(self) -> list[str]: # noqa: D102 + return ["metadata.title", "metadata.resource_type"] -# @pytest.mark.skip(reason="Not implemented") def test_record_publication_api( - running_app, - db, - client_with_login, - headers, - user_factory, - search_clear, - celery_worker, - mock_send_remote_api_update_fixture, + running_app: RunningApp, + db: SQLAlchemy, + client_with_login: Callable, + headers: dict, + user_factory: Callable, + search_clear: Callable, + celery_worker: Callable, + mock_send_remote_api_update_fixture: Callable, ): + """Test that a user can publish a draft record via the API.""" app = running_app.app metadata = TestRecordMetadata(app=app) u = user_factory( @@ -264,8 +252,6 @@ def test_record_publication_api( ) user = u.user token = u.allowed_token - # identity = u.identity - # print(identity) with app.test_client() as client: logged_in_client = client_with_login(client, user) @@ -297,15 +283,15 @@ def test_record_publication_api( def test_record_publication_service( - running_app, - db, - client_with_login, - headers, - user_factory, - search_clear, - celery_worker, - mock_send_remote_api_update_fixture, - minimal_draft_record_factory, + running_app: RunningApp, + db: SQLAlchemy, + client_with_login: Callable, + headers: dict, + user_factory: Callable, + search_clear: Callable, + celery_worker: Callable, + mock_send_remote_api_update_fixture: Callable, + minimal_draft_record_factory: Callable, ): """Test that a system user can create a draft record internally.""" app = running_app.app @@ -337,14 +323,15 @@ def test_record_publication_service( def test_record_draft_update_api( - running_app, - db, - client_with_login, - headers, - user_factory, - search_clear, - mock_send_remote_api_update_fixture, + running_app: RunningApp, + db: SQLAlchemy, + client_with_login: Callable, + headers: dict, + user_factory: Callable, + search_clear: Callable, + mock_send_remote_api_update_fixture: Callable, ): + """Test that a user can update a draft record via the API.""" app = running_app.app metadata = TestRecordMetadata(app=app) @@ -402,16 +389,17 @@ def test_record_draft_update_api( def test_record_draft_update_service( - running_app, - db, - client_with_login, - minimal_draft_record_factory, - headers, - user_factory, - search_clear, - celery_worker, - mock_send_remote_api_update_fixture, + running_app: RunningApp, + db: SQLAlchemy, + client_with_login: Callable, + minimal_draft_record_factory: Callable, + headers: dict, + user_factory: Callable, + search_clear: Callable, + celery_worker: Callable, + mock_send_remote_api_update_fixture: Callable, ): + """Test that a system user can update a draft record internally.""" app = running_app.app metadata = TestRecordMetadata(app=app) draft_result = minimal_draft_record_factory(metadata=metadata.metadata_in) @@ -433,27 +421,29 @@ def test_record_draft_update_service( @pytest.mark.skip(reason="Not implemented") def test_record_published_update( - running_app, - db, - client_with_login, - headers, - user_factory, - search_clear, - mock_send_remote_api_update_fixture, + running_app: RunningApp, + db: SQLAlchemy, + client_with_login: Callable, + headers: dict, + user_factory: Callable, + search_clear: Callable, + mock_send_remote_api_update_fixture: Callable, ): + """Test that a user can update a published record via the API.""" pass @pytest.mark.skip(reason="Not implemented") def test_record_versioning( - running_app, - db, - client_with_login, - headers, - user_factory, - search_clear, - mock_send_remote_api_update_fixture, + running_app: RunningApp, + db: SQLAlchemy, + client_with_login: Callable, + headers: dict, + user_factory: Callable, + search_clear: Callable, + mock_send_remote_api_update_fixture: Callable, ): + """Test that a user can create a new version of a record.""" pass @@ -512,8 +502,7 @@ def test_record_file_upload_api( minimal_draft_record_factory, mock_send_remote_api_update_fixture, ): - """ - Test the record file upload API. + """Test the record file upload API. Create a draft record, upload a file to it via the API, and confirm that the file is uploaded. Check the `files` property of the draft's retrieved @@ -560,10 +549,6 @@ def test_record_file_upload_api( headers={**headers, "Authorization": f"Bearer {token}"}, ) # csrf_cookie = response.headers.get("Set-Cookie") - print("headers") - print(headers) - print("response headers") - print(response.headers) assert response.status_code == 201 assert response.json["enabled"] assert response.json["default_preview"] is None @@ -616,7 +601,7 @@ def test_record_file_upload_api( response.json["entries"][0]["updated"] ) < timedelta(seconds=1) assert response.json["links"] == { - "self": (f"{app.config['SITE_API_URL']}/records/{draft_id}/draft/files"), + "self": f"{app.config['SITE_API_URL']}/records/{draft_id}/draft/files", "archive": ( f"{app.config['SITE_API_URL']}/records/{draft_id}/draft/files-archive" ), @@ -785,8 +770,7 @@ def test_record_view_api( celery_worker, mock_send_remote_api_update_fixture, ): - """ - Test the record view API. + """Test the record view API. Create a published record and test that its metadata is returned from the records API endpoint. @@ -814,10 +798,7 @@ def test_record_view_api( def test_records_api_endpoint_not_found(running_app): - """ - Test that the records API endpoint returns a 404 error when the requested - record is not found. - """ + """Test that the records API endpoint returns 404 when record is not found.""" app = running_app.app with app.test_client() as client: response = client.get("/api/records/1234567890") @@ -828,16 +809,15 @@ def test_records_api_endpoint_not_found(running_app): def test_records_api_bare_endpoint(running_app): - """ - Test that the records API endpoint returns a 404 error when the requested - record is not found. - """ + """Test that the records API returns 404 error when endpoint not found.""" app = running_app.app with app.test_client() as client: response = client.get("/api/records/") assert response.json == { - "message": "The requested URL was not found on the server. If you " - "entered the URL manually please check your spelling and " - "try again.", + "message": ( + "The requested URL was not found on the server. If you " + "entered the URL manually please check your spelling and " + "try again." + ), "status": 404, } diff --git a/site/tests/api/test_collections.py b/tests/api/test_collections.py similarity index 90% rename from site/tests/api/test_collections.py rename to tests/api/test_collections.py index de2ad0176..522b2e958 100644 --- a/site/tests/api/test_collections.py +++ b/tests/api/test_collections.py @@ -1,13 +1,20 @@ -import pytest -import arrow -from datetime import timedelta +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Integration tests for collections.""" + import json +import re +from datetime import timedelta + +import arrow +import pytest from invenio_access.permissions import authenticated_user from invenio_access.utils import get_identity -# from pprint import pformat -import re - def test_collection_submission_by_owner_open( running_app, @@ -21,8 +28,7 @@ def test_collection_submission_by_owner_open( celery_worker, mock_send_remote_api_update_fixture, ): - """ - Test collection submission by the owner when the collection does not require review. + """Test collection submission by the owner when the collection doesn't need review. FIXME: This should not be allowed for collection owners. It violates the review policy. @@ -51,17 +57,6 @@ def test_collection_submission_by_owner_open( collection_meta = collection_rec.to_dict() draft = minimal_draft_record_factory(identity=identity) - draft_owner = draft.to_dict()["parent"]["access"]["owned_by"] - app.logger.debug(draft_owner) - - from invenio_rdm_records.services.permissions import RDMRecordPermissionPolicy - - app.logger.debug("RDMPermissionPolicy allows?") - app.logger.debug( - RDMRecordPermissionPolicy(action="update_draft") - .generators[0] - .needs(record=draft._record) - ) with app.test_client() as client: # client = client_with_login(client, admin_user) @@ -169,8 +164,7 @@ def test_collection_submission_by_curator_closed( mock_send_remote_api_update_fixture, celery_worker, ): - """ - Test the collection submission API by a curator when the collection requires review. + """Test the collection submission API by a curator when collection requires review. Intended to confirm that the review policy is enforced. @@ -197,8 +191,6 @@ def test_collection_submission_by_curator_closed( collection_meta = collection_rec.to_dict() draft = minimal_draft_record_factory(identity=identity) - draft_owner = draft.to_dict()["parent"]["access"]["owned_by"] - app.logger.debug(draft_owner) with app.test_client() as client: review_response = client.put( @@ -262,6 +254,7 @@ def test_group_collection_read_all( communities_links_factory, mock_send_remote_api_update_fixture, ): + """Test the group collections API read all.""" app = running_app.app u = user_factory(token=True) token = u.allowed_token @@ -270,27 +263,27 @@ def test_group_collection_read_all( sample_communities_factory() - app.logger.debug(app.config["KC_SEARCH_URL_DOCS"]) - with app.test_client() as client: response = client.get( f"{app.config['SITE_API_URL']}/group_collections?size=4", follow_redirects=True, headers={**headers, "Authorization": f"Bearer {token}"}, ) - app.logger.debug(response.text) - app.logger.debug(response.json) assert response.status_code == 200 assert response.json["hits"]["total"] == 8 assert len(response.json["hits"]["hits"]) == 4 assert response.json["sortBy"] == "updated-desc" assert response.json["links"] == { - "next": f"{app.config['SITE_API_URL']}/communities?" - "page=2&q=%2B_exists_%3Acustom_fields.kcr%5C%3Acommons_instance%20" - "&size=4&sort=updated-desc", - "self": f"{app.config['SITE_API_URL']}/communities?" - "page=1&q=%2B_exists_%3Acustom_fields.kcr%5C%3Acommons_instance%20" - "&size=4&sort=updated-desc", + "next": ( + f"{app.config['SITE_API_URL']}/communities?" + "page=2&q=%2B_exists_%3Acustom_fields.kcr%5C%3Acommons_instance%20" + "&size=4&sort=updated-desc" + ), + "self": ( + f"{app.config['SITE_API_URL']}/communities?" + "page=1&q=%2B_exists_%3Acustom_fields.kcr%5C%3Acommons_instance%20" + "&size=4&sort=updated-desc" + ), } for hit in response.json["hits"]["hits"]: assert re.match( @@ -332,4 +325,5 @@ def test_group_collection_read_all( def test_group_collections_read_one( running_app, db, search_clear, headers, user_factory ): + """Test the group collections API read one.""" pass diff --git a/tests/api/test_per_field_edit_permissions.py b/tests/api/test_per_field_edit_permissions.py new file mode 100644 index 000000000..7df2391f6 --- /dev/null +++ b/tests/api/test_per_field_edit_permissions.py @@ -0,0 +1,1197 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Integration tests for per-field editing permission restrictions.""" + +import abc +import copy +from collections.abc import Callable + +import pytest +from flask.testing import FlaskClient +from flask_sqlalchemy import SQLAlchemy +from invenio_access.permissions import system_identity +from invenio_access.utils import get_identity +from invenio_administration.generators import Administration +from invenio_communities.errors import SetDefaultCommunityError +from invenio_communities.generators import ( + CommunityCurators, + CommunityManagers, + CommunityOwners, + CommunityRoleNeed, +) +from invenio_communities.utils import load_community_needs +from invenio_rdm_records.proxies import ( + current_rdm_records_service, + current_record_communities_service, +) +from invenio_rdm_records.records.api import RDMDraft +from invenio_record_importer_kcworks.services.communities import CommunitiesHelper +from invenio_records_permissions.generators import SystemProcess +from invenio_records_resources.services.errors import PermissionDeniedError +from kcworks.services.records.components.per_field_permissions_component import ( + PerFieldEditPermissionsComponent, +) +from kcworks.services.records.record_communities.community_change_permissions_component import ( # noqa: E501 + CommunityChangePermissionsComponent, +) +from kcworks.utils import get_value_by_path, update_nested_dict + +from ..conftest import RunningApp +from ..fixtures.communities import make_community_member +from ..fixtures.users import get_authenticated_identity + + +@pytest.fixture # type: ignore +def per_field_component() -> PerFieldEditPermissionsComponent: + """Fixture to set up the PerFieldEditPermissionsComponent.""" + return PerFieldEditPermissionsComponent(service=current_rdm_records_service) + + +@pytest.fixture # type: ignore +def community_change_permissions_component() -> CommunityChangePermissionsComponent: + """Fixture to set up the CommunityChangePermissionsComponent.""" + return CommunityChangePermissionsComponent( + service=current_record_communities_service + ) + + +@pytest.mark.parametrize( # type: ignore + "config,record_has_community,expected", + [ + # Test list policy + ( + { + "default": { + "policy": ["metadata.title", "metadata.description"], + "default_editors": ["manager", "owner", "curator"], + "notify_on_change": True, + "grace_period": "10 days", + } + }, + False, + { + "policy": { + "metadata.title": ["manager", "owner", "curator"], + "metadata.description": ["manager", "owner", "curator"], + }, + "default_editors": ["manager", "owner", "curator"], + "notify_on_change": True, + "grace_period": "10 days", + }, + ), + # Test dict policy with role levels + ( + { + "test-community": { + "policy": { + "metadata.title": ["owner", "manager"], + "metadata.description": ["curator"], + "metadata.funding": [Administration, SystemProcess], + } + } + }, + True, + { + "policy": { + "metadata.title": ["owner", "manager"], + "metadata.description": ["curator"], + "metadata.funding": [Administration, SystemProcess], + } + }, + ), + # Test empty config + ({}, True, {}), + # Test community-specific overrides default + ( + { + "default": { + "policy": ["metadata.title"], + "default_editors": ["curator"], + }, + "test-community": {"policy": {"metadata.title": ["owner"]}}, + }, + True, + {"policy": {"metadata.title": ["owner"]}}, + ), + ], +) +def test_per_field_permissions_get_permissions_config( + per_field_component: PerFieldEditPermissionsComponent, + running_app: RunningApp, # noqa: F821 + db: SQLAlchemy, + minimal_draft_record_factory: Callable, + minimal_published_record_factory: Callable, + minimal_community_factory: Callable, + config: dict, + record_has_community: bool, + expected: dict, +) -> None: + """Test the get_permissions_config method of PerFieldEditPermissionsComponent. + + Tests different permission policy configurations including: + - List of restricted fields with default editors + - Dict mapping fields to role levels + - Empty config + - Empty config + - Community-specific overrides of default config + """ + running_app.app.config["RDM_RECORDS_PERMISSIONS_PER_FIELD"] = config + + with running_app.app.app_context(): + community = minimal_community_factory(slug="test-community") + record = None + if record_has_community: + draft = minimal_draft_record_factory() + CommunitiesHelper().publish_record_to_community(draft.id, community.id) + record = current_rdm_records_service.edit(system_identity, draft.id)._record + else: + published = minimal_published_record_factory() + record = current_rdm_records_service.edit( + system_identity, published.id + )._record + + result = per_field_component.get_permissions_config(record.parent.communities) + assert result == expected + + +class BasePerFieldPermissionsTest(abc.ABC): + """Abstract base class for testing per-field permissions.""" + + @property + @abc.abstractmethod + def permissions_config(self) -> dict: + """Return the permissions configuration for the test.""" + pass + + @property + @abc.abstractmethod + def data_to_update(self) -> dict: + """Return the data that will be used to update the record.""" + pass + + @property + def record_is_published(self) -> bool: + """Return whether the record should be published.""" + return True + + @property + def record_is_in_community(self) -> bool: + """Return whether the record should be in a community.""" + return True + + @property + @abc.abstractmethod + def user_community_role(self) -> str: + """Return the user's role in the community.""" + pass + + @property + def user_is_record_owner(self) -> bool: + """Return whether the user owns the record.""" + return True + + @property + @abc.abstractmethod + def expected(self) -> dict: + """Return the expected test results.""" + pass + + def test_per_field_permissions_update_draft( + self, + per_field_component: PerFieldEditPermissionsComponent, + running_app: RunningApp, + db: SQLAlchemy, + user_factory: Callable, + record_metadata: Callable, + minimal_community_factory: Callable, + mock_send_remote_api_update_fixture: Callable, + client: FlaskClient, + ) -> None: + """Test the update_draft method of PerFieldEditPermissionsComponent.""" + # Create a user and get their identity + u = user_factory(saml_id="") + app = running_app.app + user_id = u.user.id + identity = get_authenticated_identity(u.user) + + # Create a second user to own the community + u2 = user_factory(email="test2@example.com", saml_id="") + user_id2 = u2.user.id + identity2 = get_identity(u2.user) + + # Create a sample community + community = minimal_community_factory(owner=user_id2, slug="test-community") + + # add user1 to the community with the specified role + make_community_member(user_id, self.user_community_role, community.id) + # add the community needs to the user's identities + load_community_needs(identity) + load_community_needs(identity2) + assert [c for c in identity.provides if c.method == "community"] == [ + CommunityRoleNeed(value=community.id, role=self.user_community_role) + ] + if self.user_community_role == "curator": + assert not any( + c + for c in identity.provides + if hasattr(c, "role") and c.role == "manager" + ) + assert [c for c in identity2.provides if c.method == "community"] == [ + CommunityRoleNeed(value=community.id, role="owner") + ] + + # Configure permissions for the community + app.config["RDM_RECORDS_PERMISSIONS_PER_FIELD"] = self.permissions_config + + # Create a draft record using the current_rdm_records_service + # and publish it to the community + draft_data = record_metadata(owner_id=user_id) + draft_data.update_metadata( + { + "metadata|funding": [ + { + "funder": { + "id": "00k4n6c31", + }, + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.kcworks.org/755021", + "scheme": "url", + } + ], + "number": "755021", + "title": {"en": "Award 755021"}, + }, + }, + { + "funder": { + "id": "00k4n6c32", + }, + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.kcworks.org/755022", + "scheme": "url", + } + ], + "number": "755022", + "title": {"en": "Award 755022"}, + }, + }, + { + "funder": { + "id": "00k4n6c33", + }, + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.kcworks.org/755023", + "scheme": "url", + } + ], + "number": "755023", + "title": {"en": "Award 755023"}, + }, + }, + { + "funder": { + "id": "00k4n6c34", + }, + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.kcworks.org/755024", + "scheme": "url", + } + ], + "number": "755024", + "title": {"en": "Award 755024"}, + }, + }, + ] + } + ) + draft = current_rdm_records_service.create(identity, draft_data.metadata_in) + + if self.record_is_published: + if self.record_is_in_community: + CommunitiesHelper().publish_record_to_community(draft.id, community.id) + # Check that the record is published to the community + published_record = current_rdm_records_service.read( + system_identity, draft.id + ) + assert published_record.data == published_record.to_dict() + assert ( + published_record.data["parent"]["communities"]["default"] + == community.id + ) + assert published_record.data["parent"]["access"]["owned_by"] == { + "user": str(user_id) + } + else: + published_record = current_rdm_records_service.publish( + identity, draft.id + ) + # Check that the record is not published to the community + assert published_record.data["parent"]["communities"] is None + + # Create a new draft and call the update_draft method + new_draft = current_rdm_records_service.edit(identity, draft.id) + new_draft_data = copy.deepcopy(new_draft.data) + # New data to update (attempting to change the restricted title field) + new_draft_data = update_nested_dict(new_draft_data, self.data_to_update) + + # now test the component in action + updated_draft = current_rdm_records_service.update_draft( + identity, draft.id, new_draft_data + ).to_dict() + + # Assertions to check if the draft was updated correctly + for field in self.expected["unchanged"]: + assert get_value_by_path(updated_draft, field) == get_value_by_path( + published_record.data, field + ) + for field, value in self.expected["changed"].items(): + assert get_value_by_path(updated_draft, field) == value + assert len(updated_draft.get("errors", [])) == len( + self.expected.get("errors", []) + ) + for error in self.expected.get("errors", []): + match = next( + ( + e + for e in updated_draft.get("errors", []) + if e["field"] == error["field"] + ), + None, + ) + running_app.app.logger.info(f"match: {match}") + running_app.app.logger.info(f"error: {error}") + running_app.app.logger.info(f"updated_draft: {updated_draft.get('errors')}") + assert match is not None + assert match == error + + +class TestBasicPerFieldEditPermissionAccessFails(BasePerFieldPermissionsTest): + """Access changes fail when the community policy doesn't allow the user's role. + + Note that when the access field is restricted, missing fields in the update data + (like embargo fields) count as "changes" and are blocked. + + Also tests that "manager" role checks still disallow the "curator" role. + """ + + @property + def permissions_config(self) -> dict: # noqa: D102 + return { + "test-community": { + "policy": { + "access": ["owner", "manager"], + }, + } + } + + @property + def user_community_role(self) -> str: # noqa: D102 + return "curator" + + @property + def data_to_update(self) -> dict: # noqa: D102 + return { + "access": { + "files": "restricted", + } + } + + @property + def expected(self) -> dict: # noqa: D102 + return { + "unchanged": ["access.files", "access.embargo"], + "changed": {}, + "errors": [ + { + "field": "access.embargo.reason", + "messages": [ + "You do not have permission to edit this field because the " + "record is included in the test-community community. Please " + "contact the community owner or manager for assistance." + ], + }, + { + "field": "access.embargo.active", + "messages": [ + "You do not have permission to edit this field because the " + "record is included in the test-community community. Please " + "contact the community owner or manager for assistance." + ], + }, + { + "field": "access.files", + "messages": [ + "You do not have permission to edit this field because the " + "record is included in the test-community community. Please " + "contact the community owner or manager for assistance." + ], + }, + { + "field": "access.embargo.until", + "messages": [ + "You do not have permission to edit this field because the " + "record is included in the test-community community. Please " + "contact the community owner or manager for assistance." + ], + }, + ], + } + + +class TestBasicPerFieldEditPermissionsOwnerFails(BasePerFieldPermissionsTest): + """Owner can't update record when the community policy doesn't allow their role. + + Also tests that the "default" policy is applied when no community policy is + defined, and that the "default_editors" are applied when the policy is a list + of fields. + """ + + @property + def permissions_config(self) -> dict: # noqa: D102 + return { + "default": { + "policy": ["metadata.title", "metadata.description"], + "default_editors": ["manager", "owner", "curator"], + } + } + + @property + def data_to_update(self) -> dict: # noqa: D102 + return { + "metadata": { + "title": "Updated Title", + "publisher": "KCWorks", + } + } + + @property + def user_community_role(self) -> str: # noqa: D102 + return "reader" + + @property + def expected(self) -> dict: # noqa: D102 + return { + "unchanged": ["metadata.title"], + "changed": { + "metadata.publisher": "KCWorks", + }, + "errors": [ + { + "field": "metadata.title", + "messages": [ + "You do not have permission to edit this field " + "because the record is included in the test-community " + "community. Please contact the community owner or " + "manager for assistance." + ], + } + ], + } + + +class TestBasicPerFieldEditPermissionsOwnerFails2( + TestBasicPerFieldEditPermissionsOwnerFails +): + """Test policy definition with community-specific dictionary.""" + + @property + def permissions_config(self) -> dict: # noqa: D102 + return { + "test-community": { + "policy": { + "metadata.title": ["owner", "manager", "curator"], + "metadata.description": ["owner", "manager", "curator"], + }, + } + } + + +class TestBasicPerFieldEditPermissionsOwnerFails3( + TestBasicPerFieldEditPermissionsOwnerFails +): + """Test policy definition with dictionary of callable generators.""" + + @property + def permissions_config(self) -> dict: # noqa: D102 + return { + "test-community": { + "policy": { + "metadata.title": [ + CommunityOwners, + CommunityManagers, + CommunityCurators, + ], + "metadata.description": [ + CommunityOwners, + CommunityManagers, + CommunityCurators, + ], + }, + } + } + + +class TestPerFieldEditPermissionsOwner2(BasePerFieldPermissionsTest): + """Owner can update the record when the community policy allows their role. + + This test checks that the owner can update the record when the community policy + allows their role. It also tests field-specific lists of allowed roles, checking + that the owner can update the title field based on the "curator" role, but cannot + update the creators field. Also tests that the owner can update the + publication date field, which is unrestricted. + """ + + @property + def permissions_config(self) -> dict: # noqa: D102 + return { + "default": { + "policy": { + "metadata.creators.person_or_org.name": ["owner"], + "metadata.title": ["owner", "manager", "curator"], + }, + } + } + + @property + def user_community_role(self) -> str: # noqa: D102 + return "curator" + + @property + def data_to_update(self) -> dict: # noqa: D102 + return { + "metadata": { + "title": "Updated Title", + "creators": [{"person_or_org": {"name": "Updated Creator"}}], + "publication_date": "2024-01-01", + } + } + + @property + def expected(self) -> dict: # noqa: D102 + return { + "unchanged": ["metadata.creators.0.person_or_org.name"], + "changed": { + "metadata.title": "Updated Title", + "metadata.publication_date": "2024-01-01", + }, + "errors": [], + } + + +class TestPerFieldEditPermissionsOwner3(BasePerFieldPermissionsTest): + """Owner can update list field items if the item index is not restricted. + + This test checks that the owner can update list field items if the item index + is not restricted, but restricted indices for the list field are not updated. + """ + + @property + def permissions_config(self) -> dict: # noqa: D102 + return { + "default": { + "policy": { + "metadata.funding.0.funder": ["owner", "manager"], + "metadata.funding[funder.id=00k4n6c33]": ["owner", "manager"], + "metadata.funding.funder.id[00k4n6c34]": ["owner", "manager"], + }, + } + } + + @property + def user_community_role(self) -> str: # noqa: D102 + return "reader" + + @property + def data_to_update(self) -> dict: # noqa: D102 + return { + "metadata": { + "funding": [ + { + "funder": {"id": "00k4n6c35"}, + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.kcworks.org/755025", + "scheme": "url", + } + ] + }, + }, + { + "funder": {"id": "00k4n6c36"}, + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.kcworks.org/755026", + "scheme": "url", + } + ] + }, + }, + { + "funder": { + "id": "00k4n6c33", + }, + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.kcworks.org/755021", + "scheme": "url", + } + ] + }, + }, + { + "funder": { + "id": "00k4n6c34", + }, + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.kcworks.org/755024", + "scheme": "url", + } + ] + }, + }, + ], + } + } + + @property + def expected(self) -> dict: # noqa: D102 + return { + "unchanged": [ + "metadata.funding.0.funder", + "metadata.funding.2.award.identifiers.0.identifier", + ], + "changed": { + "metadata.funding.1.funder.id": "00k4n6c36", + "metadata.funding.3.award.identifiers.0.identifier": ( + "https://sandbox.kcworks.org/755024" + ), + }, + "errors": [ + { + "field": "metadata.funding.2.award.identifiers.0.identifier", + "messages": [ + "You do not have permission to edit this field " + "because the record is included in the test-community " + "community. Please contact the community owner or " + "manager for assistance." + ], + }, + { + "field": "metadata.funding.0.funder.id", + "messages": [ + "You do not have permission to edit this field " + "because the record is included in the test-community " + "community. Please contact the community owner or " + "manager for assistance." + ], + }, + ], + } + + +def test_per_field_permissions_find_changed_restricted_fields( + per_field_component: PerFieldEditPermissionsComponent, + running_app: RunningApp, + db: SQLAlchemy, + user_factory: Callable, + record_metadata: Callable, +) -> None: + """Test the _find_changed_restricted_fields static method. + + A method of PerFieldEditPermissionsComponent that is used to find fields that + are restricted and have changed. + """ + # Configure test community permissions + community_config = { + "policy": { + "access.files": ["owner", "manager"], + "metadata.title": ["owner", "manager"], + "metadata.additional_titles.1.title": ["owner", "manager"], + "metadata.description": ["owner"], + "metadata.creators": ["owner", "manager", "curator"], + "custom_fields.test_field.id": ["owner", "manager", "curator"], + "custom_fields.test_field2.items.value": ["owner", "manager", "curator"], + "metadata.funding[funder.id=00k4n6c34]": ["owner", "manager", "curator"], + } + } + + # Create a mock record with some data + record = RDMDraft.create( + { + "access": {"files": "restricted"}, + "metadata": { + "title": "Original Title", + "description": "Original Description", + "creators": [ + {"person_or_org": {"name": "Original Creator"}}, + {"person_or_org": {"name": "Original Creator 2"}}, + ], + "additional_titles": [ + {"title": "Original Additional Title"}, + {"title": "Original Additional Title 2"}, + ], + "publication_date": "2023-01-01", # Unrestricted field + "funding": [ + { + "funder": {"id": "00k4n6c33"}, + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.kcworks.org/755023", + "scheme": "url", + }, + ] + }, + }, + { + "funder": {"id": "00k4n6c34"}, + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.kcworks.org/755024", + "scheme": "url", + }, + ] + }, + }, + ], + }, + "custom_fields": { + "test_field": { + "id": "test_field", + "value": "Original Value", + }, + "test_field2": { + "items": [ + {"value": "Original Value"}, + {"value": "Original Value 2"}, + ] + }, + }, + } + ) + + # New data with changes + new_data = { + "access": {"files": "open"}, + "metadata": { + "title": "Updated Title", + "description": "Updated Description", + "creators": [{"person_or_org": {"name": "Original Creator"}}], # 1 dropped + "publication_date": "2024-01-01", # Changed but unrestricted + "additional_titles": [ + {"title": "Updated Additional Title"}, # changed but unrestricted + {"title": "Updated Additional Title 2"}, # changed and restricted + ], + "funding": [ + { + "funder": {"id": "00k4n6c33"}, + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.kcworks.org/755023", + "scheme": "url", + }, + ] + }, + }, + { + "funder": {"id": "00k4n6c31"}, + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.kcworks.org/755021", + "scheme": "url", + }, + ] + }, + }, + ], + }, + "custom_fields": { + "test_field": { + "id": "test_field_changed", # Changed and restricted + "value": "Updated Value", # Changed but unrestricted + }, + "test_field2": { + "items": [ + {"value": "Original Value"}, + { + "value": "Updated Value 2" + }, # Checking that the list index is included + ] + }, + }, + } + + # Test finding changed restricted fields + changed_restricted_fields = ( + PerFieldEditPermissionsComponent._find_changed_restricted_fields( + record, new_data, community_config + ) + ) + + # Assert that the correct fields are being returned + assert len(changed_restricted_fields) == 9 + assert ("access|files", "access|files") in changed_restricted_fields + assert ("metadata|title", "metadata|title") in changed_restricted_fields + assert ("metadata|description", "metadata|description") in changed_restricted_fields + assert ("metadata|creators|1", "metadata|creators") in changed_restricted_fields + assert ( + "metadata|additional_titles|1|title", + "metadata|additional_titles|1|title", + ) in changed_restricted_fields + assert ( + "custom_fields|test_field|id", + "custom_fields|test_field|id", + ) in changed_restricted_fields + assert ( + "custom_fields|test_field2|items|1|value", + "custom_fields|test_field2|items|value", + ) in changed_restricted_fields + assert ( + "metadata|funding|1|funder|id", + "metadata|funding[funder|id=00k4n6c34]", + ) in changed_restricted_fields + assert ( + "metadata|funding|1|award|identifiers|0|identifier", + "metadata|funding[funder|id=00k4n6c34]", + ) in changed_restricted_fields + + # Assert that the unrestricted fields are not being returned + assert not any( + f for f in changed_restricted_fields if f[0] == "metadata|publication_date" + ) + assert not any( + f for f in changed_restricted_fields if f[0] == "custom_fields|test_field|value" + ) + assert not any( + f + for f in changed_restricted_fields + if f[0] == "metadata|additional_titles|0|title" + ) + + +class TestCollectionRemoveRestricted: + """Test that a community is not removed if the field is restricted.""" + + @property + def permissions_config(self) -> dict: # noqa: D102 + return { + "policy": { + "parent.communities.default": ["owner", "manager"], + } + } + + @property + def user_community_role(self) -> str | None: # noqa: D102 + return "reader" + + @property + def expected(self) -> dict: # noqa: D102 + return { + "processed": [], + "errors": [ + { + "field": "parent.communities.default", + "message": ( + "You do not have permission to remove this work from " + "XXXX. Please contact the collection owner or " + "manager for assistance." + ), + } + ], + } + + def test_remove_from_community( + self, + running_app: RunningApp, + community_change_permissions_component: CommunityChangePermissionsComponent, + db: SQLAlchemy, + user_factory: Callable, + minimal_published_record_factory: Callable, + minimal_community_factory: Callable, + mock_send_remote_api_update_fixture: Callable, + client: FlaskClient, + ) -> None: + """Test that a community is not removed if the field is restricted.""" + running_app.app.config["RDM_RECORDS_PERMISSIONS_PER_FIELD"] = { + "test-community": self.permissions_config + } + community = minimal_community_factory(slug="test-community") + u = user_factory(email="test@example.com", saml_id="") + identity = get_authenticated_identity(u.user) + + if self.user_community_role: + # add user1 to the community with the specified role + make_community_member(u.user.id, self.user_community_role, community.id) + # add the community needs to the user's identities + load_community_needs(identity) + + record = minimal_published_record_factory( + identity=identity, + community_list=[community.id], + set_default=True, + ) + assert str(record._record.parent.communities.default.id) == community.id + + # Remove the community + processed, errors = current_record_communities_service.remove( + identity, id_=record.id, data={"communities": [{"id": community.id}]} + ) + assert processed == [ + {"community": p.replace("XXXX", community.id)} + for p in self.expected["processed"] + ] + assert len(errors) == len(self.expected["errors"]) + if len(errors) > 0: + assert errors[0]["message"] == self.expected["errors"][0][ + "message" + ].replace("XXXX", community.to_dict()["metadata"]["title"]) + assert errors[0]["field"] == self.expected["errors"][0]["field"] + + # Update result object + new_result = current_rdm_records_service.read(identity, id_=record.id) + if new_result._record.parent.communities.default: + assert str(new_result._record.parent.communities.default.id) == community.id + assert len(new_result._record.parent.communities) == len( + self.expected["errors"] + ) + + +class TestCollectionRemoveRestrictedAllowed(TestCollectionRemoveRestricted): + """Test that a community is removed if the identity has the correct role.""" + + @property + def user_community_role(self) -> str | None: # noqa: D102 + return "manager" + + @property + def expected(self) -> dict: # noqa: D102 + return { + "processed": ["XXXX"], + "errors": [], + } + + +class TestCollectionRemoveUnRestricted(TestCollectionRemoveRestricted): + """Test that a community is removed if the field is not restricted.""" + + @property + def permissions_config(self) -> dict: # noqa: D102 + return {} + + @property + def user_community_role(self) -> str | None: # noqa: D102 + return None + + @property + def expected(self) -> dict: # noqa: D102 + return { + "processed": ["XXXX"], + "errors": [], + } + + +class TestCollectionChangeDefaultRestricted: + """Test that a community is not changed from the default if the field is restricted.""" + + @property + def permissions_config(self) -> dict: # noqa: D102 + return { + "test-community": { + "policy": { + "parent.communities.default": ["owner", "manager"], + } + } + } + + @property + def user_community_role(self) -> str | None: # noqa: D102 + return "reader" + + @property + def error_expected(self) -> bool: # noqa: D102 + return True + + def test_change_default_community( + self, + running_app: RunningApp, + community_change_permissions_component: CommunityChangePermissionsComponent, + db: SQLAlchemy, + user_factory: Callable, + minimal_published_record_factory: Callable, + minimal_community_factory: Callable, + mock_send_remote_api_update_fixture: Callable, + client: FlaskClient, + ) -> None: + """Community is not changed from the default if the field is restricted.""" + u = user_factory(email="test2@example.com", saml_id="") + identity = get_authenticated_identity(u.user) + + community = minimal_community_factory(slug="test-community") + community2 = minimal_community_factory(slug="test-community2") + + running_app.app.config["RDM_RECORDS_PERMISSIONS_PER_FIELD"] = ( + self.permissions_config + ) + + if self.user_community_role: + # add user1 to the community with the specified role + make_community_member(u.user.id, self.user_community_role, community.id) + # add the community needs to the user's identities + load_community_needs(identity) + + record = minimal_published_record_factory( + identity=identity, + community_list=[community.id, community2.id], + set_default=True, + ) + result = current_rdm_records_service.record_cls.pid.resolve(record.data["id"]) + assert str(result.parent.communities.default.id) == community.id + + # Change the default community + if self.error_expected: + with pytest.raises(SetDefaultCommunityError): + current_record_communities_service.set_default( + identity, id_=record.id, data={"default": community2.id} + ) + else: + parent_rec = current_record_communities_service.set_default( + identity, id_=record.id, data={"default": community2.id} + ) + assert str(parent_rec.communities.default.id) == community2.id + + +class TestCollectionChangeDefaultRestricted2(TestCollectionChangeDefaultRestricted): + """Community is not changed from the default if the user is not allowed. + + Also tests that the "default" policy is applied when no community policy is + defined, and that the "default_editors" are applied when the policy is a list + of fields. + """ + + @property + def permissions_config(self) -> dict: # noqa: D102 + return { + "default": { + "policy": ["parent.communities.default"], + "default_editors": ["owner", "manager"], + } + } + + +class TestCollectionChangeDefaultAllowed(TestCollectionChangeDefaultRestricted): + """Community is changed from the default if the user is allowed.""" + + @property + def user_community_role(self) -> str | None: # noqa: D102 + return "manager" + + @property + def error_expected(self) -> bool: # noqa: D102 + return False + + +class TestCollectionChangeDefaultUnRestricted(TestCollectionChangeDefaultRestricted): + """Community is changed from the default if the field is not restricted.""" + + @property + def permissions_config(self) -> dict: # noqa: D102 + return {} + + @property + def user_community_role(self) -> str | None: # noqa: D102 + return "owner" + + @property + def error_expected(self) -> bool: # noqa: D102 + return False + + +def test_community_change_permissions_check_default_permission( + running_app: RunningApp, + community_change_permissions_component: CommunityChangePermissionsComponent, + db: SQLAlchemy, + user_factory: Callable, + minimal_published_record_factory: Callable, + minimal_community_factory: Callable, +) -> None: + """Test the _check_default_community_permission method.""" + # Create a user and get their identity + u = user_factory(email="test@example.com", saml_id="") + identity = get_authenticated_identity(u.user) + + # Create a community + community = minimal_community_factory(slug="test-community") + + # Create a record with the community as default + record = minimal_published_record_factory( + identity=identity, + community_list=[community.id], + set_default=True, + )._record + assert record.parent.communities.default is not None + assert str(record.parent.communities.default.id) == community.id + + # Test case 1: Field not restricted - should allow changes + running_app.app.config["RDM_RECORDS_PERMISSIONS_PER_FIELD"] = {} + # No exception should be raised + assert community_change_permissions_component._check_default_community_permission( + identity, record, "change" + ) + + # Test case 2: Field restricted but user has required role + running_app.app.config["RDM_RECORDS_PERMISSIONS_PER_FIELD"] = { + "test-community": { + "policy": { + "parent.communities.default": ["owner", "manager"], + } + } + } + make_community_member(u.user.id, "manager", community.id) + load_community_needs(identity) + # No exception should be raised + assert community_change_permissions_component._check_default_community_permission( + identity, record, "change" + ) + + # Test case 3: Field restricted and user doesn't have required role + running_app.app.config["RDM_RECORDS_PERMISSIONS_PER_FIELD"] = { + "test-community": { + "policy": { + "parent.communities.default": ["owner"], + } + } + } + with pytest.raises(PermissionDeniedError) as exc_info: + community_change_permissions_component._check_default_community_permission( + identity, record, "change" + ) + assert "You do not have permission to change this default community" in str( + exc_info.value + ) + + # Test case 4: No default community - should allow changes + record.parent.communities.default = None + # No exception should be raised + assert community_change_permissions_component._check_default_community_permission( + identity, record, "change" + ) diff --git a/tests/api/test_permissions.py b/tests/api/test_permissions.py new file mode 100644 index 000000000..69afabcc3 --- /dev/null +++ b/tests/api/test_permissions.py @@ -0,0 +1,272 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Tests for record permissions.""" + +from collections import Counter +from collections.abc import Callable + +import pytest +from flask_principal import ( + Identity, + Need, + UserNeed, +) +from invenio_access.permissions import Permission +from invenio_communities.generators import ( + CommunityCurators, + CommunityManagers, + CommunityMembers, + CommunityOwners, + CommunityRoleNeed, +) +from kcworks.services.records.permissions import ( + per_field_edit_permission_factory, +) + +from ..conftest import RunningApp + + +def test_community_members_generator( + running_app: RunningApp, minimal_community_factory: Callable +) -> None: + """Test the CommunityMembers generator.""" + community = minimal_community_factory() + # Create a test identity with member role + identity = Identity(1) + identity.provides.add(UserNeed(1)) + identity.provides.add(CommunityRoleNeed(value=community.id, role="reader")) + + identity2 = Identity(2) + identity2.provides.add(UserNeed(2)) + + # Create and test the generator + generator = CommunityMembers() + needs = generator.needs(record=community._record, community_id=community.id) + excludes = generator.excludes(record=community._record, community_id=community.id) + + assert Permission(*needs).allows(identity) + assert Permission(*needs).allows(identity2) is False + assert Counter(needs) == Counter( + [ + CommunityRoleNeed(value=community.id, role="owner"), + CommunityRoleNeed(value=community.id, role="manager"), + CommunityRoleNeed(value=community.id, role="curator"), + CommunityRoleNeed(value=community.id, role="reader"), + ] + ) + assert Counter(excludes) == Counter([]) + + +def test_community_curators_generator( + running_app: RunningApp, minimal_community_factory: Callable +) -> None: + """Test the CommunityCurators generator.""" + community = minimal_community_factory() + # Create a test identity with curator role + identity = Identity(1) + identity.provides.add(UserNeed(1)) + identity.provides.add(CommunityRoleNeed(value=community.id, role="curator")) + + identity2 = Identity(2) + identity2.provides.add(UserNeed(2)) + identity2.provides.add(CommunityRoleNeed(value=community.id, role="reader")) + + # Create and test the generator + generator = CommunityCurators() + needs = generator.needs(record=community._record, community_id=community.id) + excludes = generator.excludes(record=community._record, community_id=community.id) + assert Permission(*needs).allows(identity) + assert Permission(*needs).allows(identity2) is False + assert Counter(needs) == Counter( + [ + CommunityRoleNeed(value=community.id, role="curator"), + CommunityRoleNeed(value=community.id, role="manager"), + CommunityRoleNeed(value=community.id, role="owner"), + ] + ) + assert Counter(excludes) == Counter([]) + + +def test_community_managers_generator( + running_app: RunningApp, minimal_community_factory: Callable +) -> None: + """Test the CommunityManagers generator.""" + community = minimal_community_factory() + # Create a test identity with manager role + identity = Identity(1) + identity.provides.add(UserNeed(1)) + identity.provides.add(CommunityRoleNeed(value=community.id, role="manager")) + + identity2 = Identity(2) + identity2.provides.add(UserNeed(2)) + identity2.provides.add(CommunityRoleNeed(value=community.id, role="curator")) + + # Create and test the generator + generator = CommunityManagers() + needs = generator.needs(record=community._record, community_id=community.id) + excludes = generator.excludes(record=community._record, community_id=community.id) + assert Permission(*needs).allows(identity) + assert Permission(*needs).allows(identity2) is False + assert Counter(needs) == Counter( + [ + CommunityRoleNeed(value=community.id, role="manager"), + CommunityRoleNeed(value=community.id, role="owner"), + ] + ) + assert Counter(excludes) == Counter([]) + + +def test_community_owners_generator( + running_app: RunningApp, minimal_community_factory: Callable +) -> None: + """Test the CommunityOwners generator.""" + community = minimal_community_factory() + # Create a test identity with owner role + identity = Identity(1) + identity.provides.add(UserNeed(1)) + identity.provides.add(CommunityRoleNeed(value=community.id, role="owner")) + + identity2 = Identity(2) + identity2.provides.add(UserNeed(2)) + identity2.provides.add(CommunityRoleNeed(value=community.id, role="manager")) + + # Create and test the generator + generator = CommunityOwners() + needs = generator.needs(record=community._record, community_id=community.id) + excludes = generator.excludes(record=community._record, community_id=community.id) + assert Permission(*needs).allows(identity) + assert Permission(*needs).allows(identity2) is False + assert Counter(needs) == Counter( + [ + CommunityRoleNeed(value=community.id, role="owner"), + ] + ) + assert Counter(excludes) == Counter([]) + + +def test_per_field_edit_permission_factory_community_string_roles( + running_app: RunningApp, minimal_community_factory: Callable +) -> None: + """Test the factory with a community ID and string roles.""" + community = minimal_community_factory() + roles = ["owner", "manager"] + policy = per_field_edit_permission_factory(community_id=community.id, roles=roles) + + assert isinstance(policy, Permission) + expected_needs = { + CommunityRoleNeed(value=community.id, role="manager"), + CommunityRoleNeed(value=community.id, role="owner"), + Need(method="role", value="administration-access"), + Need(method="system_role", value="system_process"), + } + assert set(g for g in policy.needs) == expected_needs + + +def test_per_field_edit_permission_factory_community_generator_roles( + running_app: RunningApp, minimal_community_factory: Callable +) -> None: + """Test the factory with a community ID and generator roles. + + Note: The CommunityCurators generator adds *all roles with curate + permission*, including managers and owners. + """ + community = minimal_community_factory() + roles = [CommunityCurators] + policy = per_field_edit_permission_factory(community_id=community.id, roles=roles) + + assert isinstance(policy, Permission) + expected_generators = { + CommunityRoleNeed(value=community.id, role="curator"), + CommunityRoleNeed(value=community.id, role="manager"), + CommunityRoleNeed(value=community.id, role="owner"), + Need(method="role", value="administration-access"), + Need(method="system_role", value="system_process"), + } + assert set(g for g in policy.needs) == expected_generators + + +def test_per_field_edit_permission_factory_default_community( + running_app: RunningApp, minimal_community_factory: Callable +) -> None: + """Test the factory with 'default' community ID and no roles.""" + # Note: 'default' community doesn't actually need to exist for this policy + policy = per_field_edit_permission_factory(community_id="default", roles=[]) + + assert isinstance(policy, Permission) + expected_generators = { + Need(method="role", value="administration-access"), + Need(method="system_role", value="system_process"), + } + assert set(policy.needs) == expected_generators + + +def test_per_field_edit_permission_factory_default_community2( + running_app: RunningApp, minimal_community_factory: Callable +) -> None: + """Test the factory with 'default' community ID and roles. + + Note: The CommunityManagers generator adds *all roles with manage + permission*, including managers and owners. + """ + # Note: 'default' community doesn't actually need to exist for this policy + policy = per_field_edit_permission_factory( + community_id="default", roles=["manager"] + ) + + assert isinstance(policy, Permission) + expected_generators = { + CommunityRoleNeed(value="default", role="manager"), + CommunityRoleNeed(value="default", role="owner"), + Need(method="role", value="administration-access"), + Need(method="system_role", value="system_process"), + } + assert set(policy.needs) == expected_generators + + +def test_per_field_edit_permission_factory_community_empty_roles( + running_app: RunningApp, minimal_community_factory: Callable +) -> None: + """Test the factory with a community ID and empty roles.""" + community = minimal_community_factory() + policy = per_field_edit_permission_factory(community_id=community.id, roles=[]) + + assert isinstance(policy, Permission) + expected_generators = { + Need(method="role", value="administration-access"), + Need(method="system_role", value="system_process"), + CommunityRoleNeed(value=community.id, role="manager"), + CommunityRoleNeed(value=community.id, role="owner"), + } + assert set(policy.needs) == expected_generators + + +def test_per_field_edit_permission_factory_bad_roles( + running_app: RunningApp, minimal_community_factory: Callable +) -> None: + """Test the factory with a community ID and bad roles. + + This should raise a PermissionError. Roles must be a list of strings + or generator functions. Strings must be community role names. + """ + community = minimal_community_factory() + with pytest.raises(PermissionError): + per_field_edit_permission_factory(community_id=community.id, roles=[1]) + + with pytest.raises(PermissionError): + per_field_edit_permission_factory(community_id=community.id, roles=["bad"]) + + with pytest.raises(PermissionError): + per_field_edit_permission_factory(community_id=community.id, roles="bad") diff --git a/site/tests/api/test_search_provisioning.py b/tests/api/test_search_provisioning.py similarity index 97% rename from site/tests/api/test_search_provisioning.py rename to tests/api/test_search_provisioning.py index fead1ee1c..2c85c66b1 100644 --- a/site/tests/api/test_search_provisioning.py +++ b/tests/api/test_search_provisioning.py @@ -1,16 +1,33 @@ -# import pytest +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Integration tests for search provisioning.""" + +import json +import os +import time +from pprint import pformat + import arrow from invenio_access.permissions import system_identity from invenio_communities.proxies import current_communities from invenio_rdm_records.proxies import current_rdm_records -import json from kcworks.api_helpers import ( - format_commons_search_payload, format_commons_search_collection_payload, + format_commons_search_payload, ) -import os -from pprint import pformat -import time from ..fixtures.records import TestRecordMetadata @@ -65,10 +82,7 @@ def test_trigger_search_provisioning( actual_edited = edited_draft.data.copy() assert actual_edited["metadata"]["title"] == "A Romans Story 2" - app.logger.debug("actual_edited['id']:") - app.logger.debug(pformat(actual_edited["id"])) assert mock_adapter.call_count == 0 - app.logger.debug(f"actual_edited: {pformat(actual_edited)}") # Publish, now this should prompt a remote API operation record = service.publish(system_identity, actual_edited["id"]) @@ -78,7 +92,6 @@ def test_trigger_search_provisioning( # variable IS set by subscriber (so then reset to True) result = json.loads(os.getenv("MOCK_SIGNAL_SUBSCRIBER") or "") - app.logger.debug(pformat(result)) assert result["service_type"] == "rdm_record" assert result["service_method"] == "publish" assert result["request_url"] == rec_url @@ -662,6 +675,7 @@ def test_search_id_recording_callback( requests_mock, create_records_custom_fields, ): + """Test search ID recording callback.""" app = running_app.app # from invenio_vocabularies.proxies import ( @@ -753,6 +767,7 @@ def test_community_id_recording_callback( requests_mock, create_communities_custom_fields, ): + """Test community ID recording callback.""" app = running_app.app # Temporarily set flag to mock signal subscriber diff --git a/site/tests/api/test_stats.py b/tests/api/test_stats.py similarity index 83% rename from site/tests/api/test_stats.py rename to tests/api/test_stats.py index 42e612970..b9d59b293 100644 --- a/site/tests/api/test_stats.py +++ b/tests/api/test_stats.py @@ -1,19 +1,28 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Integration tests for usage stats operations.""" +import uuid from pprint import pformat + import arrow +import pytest from invenio_access.permissions import system_identity -from invenio_search.proxies import current_search -from invenio_stats.proxies import current_stats -from invenio_stats.tasks import process_events, aggregate_events from invenio_rdm_records.proxies import current_rdm_records_service from invenio_rdm_records.records.stats.api import Statistics -import pytest -import uuid +from invenio_search.proxies import current_search +from invenio_stats.proxies import current_stats +from invenio_stats.tasks import aggregate_events, process_events from ..fixtures.records import TestRecordMetadata @pytest.mark.skip("Not implemented") def test_stat_creation(running_app, db, search_clear): + """Test that stats events are emitted when a record is viewed and downloaded .""" app = running_app.app metadata = TestRecordMetadata(app=app) draft = current_rdm_records_service.create(system_identity, metadata.metadata_in) @@ -30,6 +39,18 @@ def test_stats_backend_processing( celery_worker, mock_send_remote_api_update_fixture, ): + """Test that stats are processed by the backend. + + This includes + - reception of signals from the stats queue + - creation of the search index documents for the received events + - aggregation of the individual events in aggregation index documents + - gathering of the stats from the aggregation index documents and injection + into record metadata + + It does *not* include the creation and emission of the stats events, + which is tested in test_stats_events_creation.py + """ app = running_app.app metadata = TestRecordMetadata(app=app) draft = current_rdm_records_service.create(system_identity, metadata.metadata_in) @@ -40,8 +61,10 @@ def test_stats_backend_processing( # ensure that the stats queue is empty # before we add any events to it - old_view_events = [p for p in current_stats.consume("record-view")] - old_download_events = [p for p in current_stats.consume("file-download")] + old_view_events = [p for p in current_stats.consume("record-view")] # noqa: C416 + old_download_events = [ # noqa: C4 + p for p in current_stats.consume("file-download") + ] app.logger.debug(f"pre-existing view events: {pformat(old_view_events)}") app.logger.debug(f"pre-existing download events: {pformat(old_download_events)}") diff --git a/site/tests/api/test_user_data_sync.py b/tests/api/test_user_data_sync.py similarity index 88% rename from site/tests/api/test_user_data_sync.py rename to tests/api/test_user_data_sync.py index f9479d567..ab288cc50 100644 --- a/site/tests/api/test_user_data_sync.py +++ b/tests/api/test_user_data_sync.py @@ -1,18 +1,29 @@ -from flask_login import login_user -from invenio_accounts.models import User -from invenio_accounts.proxies import current_accounts -from invenio_remote_user_data_kcworks.tasks import do_user_data_update +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Integration tests for the user data sync. + +These tests are designed to test the user data sync between the KC IDP and +the Invenio app. + + +""" import json import os +from collections.abc import Callable -# from pprint import pprint import pytest import requests +from flask_login import login_user +from invenio_accounts.models import User +from invenio_accounts.proxies import current_accounts +from invenio_remote_user_data_kcworks.tasks import do_user_data_update +from kcworks.services.accounts.saml import knowledgeCommons_account_setup from requests_mock.adapter import _Matcher as Matcher -from typing import Callable -# from invenio_accounts.testutils import login_user_via_session -from kcworks.services.accounts.saml import knowledgeCommons_account_setup from ..fixtures.users import AugmentedUserFixture, user_data_set @@ -48,7 +59,11 @@ def test_user_data_kc_endpoint(): @pytest.mark.skip(reason="Not implemented") def test_group_data_kc_endpoint(): - pass + """Test that the production kc endpoint returns the correct data. + + The focus here is on the json schema being returned + """ + raise NotImplementedError @pytest.mark.parametrize( @@ -90,8 +105,7 @@ def test_do_user_data_update_task( celery_worker, search_clear, ): - """ - Test that the do_user_data_update task does what it's supposed to do. + """Test that the do_user_data_update task does what it's supposed to do. - It should return the correct data - It should call the remote api if the user has an IDP @@ -102,7 +116,6 @@ def test_do_user_data_update_task( new_data_payload = user_data_to_remote_data( user_data["saml_id"], user_data["email"], user_data ) - print(f"new_data_payload: {new_data_payload}") # Create a test user u: AugmentedUserFixture = user_factory( email=starting_email, @@ -195,8 +208,7 @@ def test_user_data_sync_on_login( celery_worker, mock_send_remote_api_update_fixture, ): - """ - Test that the user data is synced when a user logs in. + """Test that the user data is synced when a user logs in. The actual api call is mocked, so this tests that the api request is made and that the user data is updated in Invenio. @@ -269,10 +281,17 @@ def test_user_data_sync_on_webhook( celery_worker, mock_send_remote_api_update_fixture, ): + """Test that the user data is synced when a user logs in. + + The actual api call is mocked, so this tests that the api request is made + and that the user data is updated in Invenio. + + Also tests that the api call does *not* happen for simple programmatic + user creation. It only happens when the user logs in. + """ app = running_app.app # Create a user # The user is created with a saml auth record because saml_src - # and saml_id are supplied. u = user_factory( email=user1_data["email"], saml_src="knowledgeCommons", @@ -302,7 +321,6 @@ def test_user_data_sync_on_webhook( ) # Ping the webhook endpoint (no data is sent) - app.logger.debug(f"SITE_API_URL: {app.config['SITE_API_URL']}") response = client.get( f"{app.config['SITE_API_URL']}/webhooks/user_data_update", ) @@ -369,6 +387,11 @@ def test_user_data_sync_on_webhook( def test_user_data_sync_on_account_setup( running_app, db, user_factory, requests_mock, search_clear ): + """Test that the user data is synced when a user is created. + + The actual api call is mocked, so this tests that the api request is made + and that the user data is updated in Invenio. + """ # Mock the remote API endpoint protocol = os.environ.get("INVENIO_COMMONS_API_REQUEST_PROTOCOL", "https") base_url = f"{protocol}://hcommons-dev.org/wp-json/commons/v1/users" @@ -432,14 +455,29 @@ def test_user_data_sync_on_account_setup( @pytest.mark.skip(reason="Not implemented") def test_user_data_sync_on_account_setup_already_linked(running_app, search_clear): + """Test that the user's data is synced when already linked to KC IDP. + + The actual api call is mocked, so this tests that the api request is made + and that the user data is updated in Invenio. + """ pass @pytest.mark.skip(reason="Not implemented") def test_user_data_sync_after_one_week(running_app, search_clear): + """Test that the user's data is synced after one week (stale). + + The actual api call is mocked, so this tests that the api request is made + and that the user data is updated in Invenio. + """ pass @pytest.mark.skip(reason="Not implemented") def test_group_data_sync_on_webhook(running_app, search_clear): + """Test that the group data is synced when a webhook is received. + + The actual api call is mocked, so this tests that the api request is made + and that the group data is updated in Invenio. + """ pass diff --git a/tests/api/test_utils.py b/tests/api/test_utils.py new file mode 100644 index 000000000..c8ffe807a --- /dev/null +++ b/tests/api/test_utils.py @@ -0,0 +1,459 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Unit tests for the kcworks.utils module.""" + +import pytest +from invenio_rdm_records.records.api import RDMDraft, RDMRecord +from invenio_record_importer_kcworks.utils.utils import replace_value_in_nested_dict +from kcworks.utils import get_changed_fields, get_value_by_path, update_nested_dict + + +@pytest.mark.parametrize( + "starting_dict,updates,expected", + [ + # Simple update + ({"a": 1}, {"b": 2}, {"a": 1, "b": 2}), + # Nested update + ({"a": {"b": 1}}, {"a": {"c": 2}}, {"a": {"b": 1, "c": 2}}), + # Update existing value + ({"a": 1}, {"a": 2}, {"a": 2}), + # Deep nested update + ( + {"a": {"b": {"c": 1}}}, + {"a": {"b": {"d": 2}}}, + {"a": {"b": {"c": 1, "d": 2}}}, + ), + # Update with empty dict + ({"a": 1}, {}, {"a": 1}), + # Update empty dict + ({}, {"a": 1}, {"a": 1}), + # Multiple nested updates + ( + {"a": {"b": 1}, "c": {"d": 2}}, + {"a": {"e": 3}, "c": {"f": 4}}, + {"a": {"b": 1, "e": 3}, "c": {"d": 2, "f": 4}}, + ), + # Update nested list + ( + {"a": {"list": [1, 2, 3]}}, + {"a": {"list": [4, 5, 6]}}, + {"a": {"list": [4, 5, 6]}}, + ), + # Update nested list within deeper structure + ( + {"a": {"b": {"items": [{"id": 1}, {"id": 2}]}}}, + {"a": {"b": {"items": [{"id": 1}, {"id": 3}]}}}, + {"a": {"b": {"items": [{"id": 1}, {"id": 3}]}}}, + ), + ], +) +def test_utils_update_nested_dict(starting_dict, updates, expected): + """Test the update_nested_dict utility function.""" + result = update_nested_dict(starting_dict, updates) + assert result == expected + + +@pytest.mark.parametrize( + "existing_data,new_data,separator,expected,as_objects", + [ + # Completely unchanged + ( + {"a": 1, "b": 2, "unchanged": "same"}, + {"a": 1, "b": 2, "unchanged": "same"}, + ".", + [], + False, + ), + # Simple dict changes with unchanged fields + ( + {"a": 1, "b": 2, "unchanged": "same"}, + {"a": 1, "b": 3, "unchanged": "same"}, + ".", + ["b"], + False, + ), + # Nested dict changes with unchanged nested fields + ( + { + "a": {"b": 1, "c": 2, "stable": "same"}, + "d": 3, + "unchanged": {"nested": "same"}, + }, + { + "a": {"b": 1, "c": 4, "stable": "same"}, + "d": 3, + "unchanged": {"nested": "same"}, + "extra": "unchanged", + }, + ".", + ["a.c", "extra"], + False, + ), + # List changes with unchanged elements + ( + {"a": [1, 2, 3, 4], "static": [4, 5, 6], "extra": "unchanged"}, + {"a": [1, 4, 3], "static": [4, 5, 6]}, + ".", + ["a.1", "a.3", "extra"], + False, + ), + # New field with unchanged existing fields + ( + {"a": 1, "unchanged": "same"}, + {"a": 1, "b": 2, "unchanged": "same"}, + ".", + ["b"], + False, + ), + # Different types with unchanged fields + ( + {"a": "string", "stable": 42, "nested": {"unchanged": True}}, + {"a": 123, "stable": 42, "nested": {"unchanged": True}}, + ".", + ["a"], + False, + ), + # None to value with unchanged fields + ( + {"a": None, "unchanged": "same", "nested": {"static": True}}, + {"a": "value", "unchanged": "same", "nested": {"static": True}}, + ".", + ["a"], + False, + ), + # Using pipe separator with unchanged nested fields + ( + { + "a": {"b": {"c": 1, "unchanged": "same"}}, + "static": {"nested": "unchanged"}, + }, + { + "a": {"b": {"c": 2, "unchanged": "same"}}, + "static": {"nested": "unchanged"}, + }, + "|", + ["a|b|c"], + False, + ), + # Deep nesting with arrays of dicts and unchanged elements + ( + { + "metadata": { + "creators": [ + {"name": "Smith", "id": 1}, + {"name": "Jones", "id": 2}, + ], + "title": "Original", + "unchanged": {"deep": {"nested": "same"}}, + }, + "static": {"field": "unchanged"}, + }, + { + "metadata": { + "creators": [ + {"name": "Smith", "id": 1}, + {"name": "Jones", "id": 3}, + ], + "title": "Changed", + "unchanged": {"deep": {"nested": "same"}}, + }, + "static": {"field": "unchanged"}, + }, + "|", + ["metadata|creators|1|id", "metadata|title"], + False, + ), + # Multiple nested changes with pipe separator and unchanged fields + ( + { + "a": { + "b": {"c": 1, "d": 2, "unchanged": "same"}, + "e": 3, + "static": "unchanged", + }, + "f": [{"g": 1}, {"g": 2}], + "unchanged": {"deeply": {"nested": "same"}}, + }, + { + "a": { + "b": {"c": 1, "d": 4, "unchanged": "same"}, + "e": 5, + "static": "unchanged", + }, + "f": [{"g": 1}, {"g": 3}], + "unchanged": {"deeply": {"nested": "same"}}, + }, + "|", + ["a|b|d", "a|e", "f|1|g"], + False, + ), + # Test with RDMDraft and RDMRecord objects + ( + { + "metadata": { + "title": "Original Title", + "description": "Original Description", + "creators": [{"person_or_org": {"name": "Original Creator"}}], + "publication_date": "2023-01-01", + "funding": [ + { + "funder": { + "id": "00k4n6c31", + }, + "award": { + "identifiers": [ + { + "identifier": ( + "https://sandbox.kcworks.org/755021" + ), + "scheme": "url", + } + ], + "number": "755021", + "title": {"en": "Award 755021"}, + }, + }, + { + "funder": { + "id": "00k4n6c32", + }, + "award": { + "identifiers": [ + { + "identifier": ( + "https://sandbox.kcworks.org/755022" + ), + "scheme": "url", + } + ], + "number": "755022", + "title": {"en": "Award 755022"}, + }, + }, + { + "funder": { + "id": "00k4n6c33", + }, + "award": { + "identifiers": [ + { + "identifier": ( + "https://sandbox.kcworks.org/755023" + ), + "scheme": "url", + } + ], + "number": "755023", + "title": {"en": "Award 755023"}, + }, + }, + { + "funder": { + "id": "00k4n6c34", + }, + "award": { + "identifiers": [ + { + "identifier": ( + "https://sandbox.kcworks.org/755024" + ), + "scheme": "url", + } + ], + "number": "755024", + "title": {"en": "Award 755024"}, + }, + }, + ], + }, + "custom_fields": { + "test_field": { + "id": "test_field", + "value": "Original Value", + } + }, + }, + { + "metadata": { + "title": "Updated Title", + "description": "Original Description", + "creators": [ + { + "person_or_org": { + "name": "New Creator", + "identifiers": [ + { + "identifier": "0000-0002-1825-0097", + "scheme": "orcid", + } + ], + } + } + ], + "publication_date": "2023-01-01", + "funding": [ + { + "award": { + "identifiers": [ + { + "identifier": ( + "https://sandbox.kcworks.org/755025" + ), + "scheme": "url", + } + ], + "number": "755021", + "title": {"en": "Award 755021"}, + "funder": { + "id": "00k4n6c35", + "name": "Funder 00k4n6c31", + }, + }, + }, + { + "award": { + "identifiers": [ + { + "identifier": ( + "https://sandbox.kcworks.org/755026" + ), + "scheme": "url", + } + ], + "number": "755022", + "title": {"en": "Award 755022"}, + }, + "funder": {"id": "00k4n6c36", "name": "Funder 00k4n6c32"}, + }, + { + "award": { + "identifiers": [ + { + "identifier": ( + "https://sandbox.kcworks.org/755023" + ), + "scheme": "url", + } + ], + "number": "755023", + "title": {"en": "Award 755023"}, + }, + "funder": {"id": "00k4n6c33", "name": "Funder 00k4n6c33"}, + }, + { + "award": { + "identifiers": [ + { + "identifier": ( + "https://sandbox.kcworks.org/755024" + ), + "scheme": "url", + } + ], + "number": "755024", + "title": {"en": "Award 755024"}, + }, + "funder": {"id": "00k4n6c34", "name": "Funder 00k4n6c34"}, + }, + ], + }, + "custom_fields": { + "test_field": { + "id": "test_field_changed", + "value": "Original Value", + } + }, + }, + "|", + [ + "access", + "custom_fields|test_field|id", + "metadata|creators|0|person_or_org|name", + "metadata|creators|0|person_or_org|identifiers", + "metadata|funding|0|award|funder", + "metadata|funding|0|award|identifiers|0|identifier", + "metadata|funding|0|funder", + "metadata|funding|1|award|identifiers|0|identifier", + "metadata|funding|1|funder|id", + "metadata|funding|1|funder|name", + "metadata|funding|2|funder|name", + "metadata|funding|3|funder|name", + "metadata|title", + ], + True, + ), + ], +) +def test_utils_get_changed_fields( + running_app, db, existing_data, new_data, separator, expected, as_objects +): + """Test get_changed_fields function with various input scenarios.""" + existing_data_object = existing_data + new_data_object = new_data + if as_objects: + new_data_object = RDMDraft.create({}) + new_data_object.metadata = new_data["metadata"] + new_data_object.custom_fields = new_data["custom_fields"] + existing_data_object = RDMRecord.create({}) + existing_data_object.metadata = existing_data["metadata"] + existing_data_object.custom_fields = existing_data["custom_fields"] + result = get_changed_fields( + existing_data_object, new_data_object, separator=separator + ) + assert sorted(result) == sorted(expected) + + +@pytest.mark.parametrize( + "input_dict,path,new_value,expected", + [ + # Simple nested dict update + ({"a": {"b": {"c": 1}}}, "a|b|c", 2, {"a": {"b": {"c": 2}}}), + # Update in nested list + ( + {"a": {"b": [{"c": 1}, {"d": 2}]}}, + "a|b|1|c", + 3, + {"a": {"b": [{"c": 1}, {"d": 2, "c": 3}]}}, + ), + # Replace entire nested value + ({"a": {"b": [{"c": 1}, {"d": 2}]}}, "a|b", {"e": 3}, {"a": {"b": {"e": 3}}}), + ], +) +def test_utils_replace_value_in_nested_dict(input_dict, path, new_value, expected): + """Test replace_value_in_nested_dict function with various input scenarios.""" + result = replace_value_in_nested_dict(input_dict, path, new_value) + assert result == expected + + +@pytest.mark.parametrize( + "input_dict,path,separator,expected", + [ + # Simple nested dict lookup + ({"a": {"b": {"c": 1}}}, "a.b.c", ".", 1), + # Lookup in nested list + ({"a": {"b": [{"c": 1}, {"d": 2}]}}, "a.b.1.d", ".", 2), + # Lookup with custom separator + ({"a": {"b": {"c": "test"}}}, "a|b|c", "|", "test"), + # Lookup deeply nested value + ({"a": {"b": {"c": {"d": {"e": "found"}}}}}, "a.b.c.d.e", ".", "found"), + # Lookup in list with multiple indices + ({"a": [1, 2, [3, 4, 5]]}, "a.2.1", ".", 4), + ], +) +def test_utils_get_value_by_path(input_dict, path, separator, expected): + """Test get_value_by_path function with various input scenarios.""" + result = get_value_by_path(input_dict, path, separator=separator) + assert result == expected diff --git a/site/tests/conftest.py b/tests/conftest.py similarity index 73% rename from site/tests/conftest.py rename to tests/conftest.py index 33aed793f..a05784e6f 100644 --- a/site/tests/conftest.py +++ b/tests/conftest.py @@ -1,37 +1,59 @@ -from collections import namedtuple -from pprint import pformat -import os -from pathlib import Path +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Top-level pytest configuration for KCWorks tests.""" + import importlib +import importlib.util +import os import shutil import tempfile +from collections import namedtuple +from pathlib import Path + +import jinja2 +import pytest from invenio_app.factory import create_app as _create_app from invenio_queues import current_queues from invenio_search.proxies import current_search_client -import jinja2 -import pytest -from .fixtures.identifiers import test_config_identifiers from .fixtures.custom_fields import test_config_fields -from .fixtures.stats import test_config_stats -from .fixtures.saml import test_config_saml from .fixtures.frontend import MockManifestLoader -from kcworks import invenio_config +from .fixtures.identifiers import test_config_identifiers +from .fixtures.saml import test_config_saml +from .fixtures.stats import test_config_stats + + +def load_config(): + """Load the invenio.cfg file and return a dictionary of its variables. + + This is needed because we can't import the invenio.cfg file directly + because it's not a Python module. + """ + config_path = Path(__file__).parent.parent / "invenio.cfg" -var = "invenio_config" -package = importlib.import_module(var) -# This code is not importing variables from ./invenio_config.py because: -# 1. It's using importlib to dynamically import a module named "invenio_config" -# 2. It's creating a dictionary from all attributes of that module -# 3. The local ./invenio_config.py file is not being referenced + spec = importlib.util.spec_from_loader("config", None) + if spec is None: + raise ValueError("Failed to load invenio.cfg") + config = importlib.util.module_from_spec(spec) -# Or if we want to create a dictionary of all variables: + with open(config_path) as f: + exec(f.read(), config.__dict__) -config = {k: v for k, v in invenio_config.__dict__.items() if not k.startswith("_")} + # Convert module attributes to a dictionary, excluding private attributes + return {k: v for k, v in config.__dict__.items() if not k.startswith("_")} + + +config = load_config() +print("Config loaded successfully") pytest_plugins = ( "celery.contrib.pytest", "tests.fixtures.files", + "tests.fixtures.mail", "tests.fixtures.communities", "tests.fixtures.custom_fields", "tests.fixtures.records", @@ -43,6 +65,7 @@ "tests.fixtures.vocabularies.community_types", "tests.fixtures.vocabularies.date_types", "tests.fixtures.vocabularies.descriptions", + "tests.fixtures.vocabularies.funding_and_awards", "tests.fixtures.vocabularies.languages", "tests.fixtures.vocabularies.licenses", "tests.fixtures.vocabularies.resource_types", @@ -95,7 +118,6 @@ def _(x): "MAIL_DEFAULT_SENDER": os.getenv("INVENIO_ADMIN_EMAIL"), # 'OAUTH2_CACHE_TYPE': 'simple', # 'OAUTHLIB_INSECURE_TRANSPORT': True, - "RATELIMIT_ENABLED": False, "SECRET_KEY": "test-secret-key", "SECURITY_PASSWORD_SALT": "test-secret-key", "WEBPACKEXT_MANIFEST_LOADER": MockManifestLoader, @@ -112,6 +134,7 @@ def _(x): test_config["LOGGING_FS_LEVEL"] = "DEBUG" test_config["LOGGING_FS_LOGFILE"] = str(log_file_path) +test_config["LOGGING_CONSOLE_LEVEL"] = "DEBUG" test_config["CELERY_LOGFILE"] = str(log_folder_path / "celery.log") test_config["RECORD_IMPORTER_DATA_DIR"] = str( parent_path / "helpers" / "sample_import_data" @@ -135,20 +158,22 @@ def _(x): ) -# @pytest.fixture(scope="module") -# def extra_entry_points() -> dict: -# return { -# "invenio_base.api_blueprints": [ -# "kcworks_templates = tests.fixtures.template_loader:template_blueprint_loader" -# ], -# "invenio_base.blueprints": [ -# "kcworks_templates = tests.fixtures.template_loader:template_blueprint_loader" -# ], -# } +@pytest.fixture(scope="module") +def extra_entry_points() -> dict: + """Extra entry points fixture for KCWorks.""" + return { + # "invenio_base.api_apps": ["kcworks = kcworks.ext:KCWorks"], + # "invenio_base.apps": ["kcworks = kcworks.ext:KCWorks"], + # "invenio_base.api_blueprints": [ + # "kcworks = kcworks.views.views:create_api_blueprint" + # ], + # "invenio_base.blueprints": ["kcworks = kcworks.views.views:create_blueprint"], + } @pytest.fixture(scope="session") def celery_config(celery_config): + """Celery config fixture for KCWorks.""" celery_config["logfile"] = str(log_folder_path / "celery.log") celery_config["loglevel"] = "DEBUG" celery_config["task_always_eager"] = True @@ -161,6 +186,7 @@ def celery_config(celery_config): @pytest.fixture(scope="session") def celery_enable_logging(): + """Celery enable logging fixture for KCWorks.""" return True @@ -181,8 +207,6 @@ def celery_enable_logging(): def location(database): """Creates a simple default location for a test. - Scope: function - Use this fixture if your test requires a `files location `_. The location will be a default location with the name @@ -211,13 +235,13 @@ def location(database): "location", "cache", "affiliations_v", - # "awards_v", + "awards_v", "community_type_v", "contributors_role_v", "creators_role_v", "date_type_v", "description_type_v", - # "funders_v", + "funders_v", "language_v", "licenses_v", # "relation_type_v", @@ -230,21 +254,19 @@ def location(database): ) -# This fixture allows us to pass each test a list of commonly used fixtures -# with a single name. @pytest.fixture(scope="function") def running_app( app, location, cache, affiliations_v, - # awards_v, + awards_v, community_type_v, contributors_role_v, creators_role_v, date_type_v, description_type_v, - # funders_v, + funders_v, language_v, licenses_v, # relation_type_v, @@ -264,13 +286,13 @@ def running_app( location, cache, affiliations_v, - # awards_v, + awards_v, community_type_v, contributors_role_v, creators_role_v, date_type_v, description_type_v, - # funders_v, + funders_v, language_v, licenses_v, # relation_type_v, @@ -284,17 +306,22 @@ def running_app( @pytest.fixture(scope="function") def search_clear(search_clear): - """Clear search indices after test finishes (function scope).""" - # # # current_search_client.indices.delete(index="*") - # # # current_search_client.indices.delete_template("*") - # # # list(current_search.create()) - # # # list(current_search.put_templates()) + """Clear search indices after test finishes (function scope). + + the search_clear fixture should each time start by running + ```python + current_search.create() + current_search.put_templates() + ``` + and then clear the indices during the fixture teardown. But + this doesn't catch the stats indices, so we need to add an + additional step to delete the stats indices and template manually. + Otherwise, the stats indices aren't cleared between tests. + """ yield search_clear # FIXME: Resource types are getting deleted from the index after # class finishes - - # Have to manually delete to catch stats indices current_search_client.indices.delete(index="*") current_search_client.indices.delete_template("*") @@ -304,10 +331,15 @@ def template_loader(): """Fixture providing overloaded and custom templates to test app.""" def load_tempates(app): + """Load templates for the test app.""" site_path = ( - Path(__file__).parent.parent / "kcworks" / "templates" / "semantic-ui" + Path(__file__).parent.parent + / "site" + / "kcworks" + / "templates" + / "semantic-ui" ) - root_path = Path(__file__).parent.parent.parent / "templates" + root_path = Path(__file__).parent.parent / "templates" for path in ( site_path, root_path, @@ -325,7 +357,6 @@ def load_tempates(app): return load_tempates -# Here we're setting up the module-scoped app fixture. @pytest.fixture(scope="module") def app( app, @@ -335,7 +366,14 @@ def app( template_loader, admin_roles, ): - """This fixture provides an app with the typically needed fixtures.""" + """This fixture provides an app with the typically needed basic fixtures. + + This fixture should be used in conjunction with the `running_app` + fixture to provide a complete app with all the typically needed + fixtures. This fixture sets up the basic functions like db, search, + and template loader once per modules. The `running_app` fixture is function + scoped and initializes all the fixtures that should be reset between tests. + """ current_queues.declare() template_loader(app) yield app @@ -343,11 +381,18 @@ def app( @pytest.fixture(scope="module") def app_config(app_config) -> dict: + """App config fixture for KCWorks.""" for k, v in test_config.items(): app_config[k] = v + return app_config @pytest.fixture(scope="module") def create_app(instance_path, entry_points): + """Create the app fixture for KCWorks. + + This initializes the basic Flask app which will then be used + to set up the `app` fixture with initialized services. + """ return _create_app diff --git a/tests/e2e/conftest.py b/tests/e2e/conftest.py new file mode 100644 index 000000000..5ab9c049a --- /dev/null +++ b/tests/e2e/conftest.py @@ -0,0 +1,16 @@ +"""Configuration for end-to-end tests. + +```python +from invenio_app.factory import create_app as create_ui_api +import pytest + +@pytest.fixture(scope='module') +def app_config(app_config): + return app_config + +@pytest.fixture(scope='module') +def create_app(): + return create_ui_api +``` + +""" diff --git a/tests/e2e/e2e_test_factory.py b/tests/e2e/e2e_test_factory.py new file mode 100644 index 000000000..e8a3da9a6 --- /dev/null +++ b/tests/e2e/e2e_test_factory.py @@ -0,0 +1,34 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Factory for E2E tests.""" + +from pprint import pprint + +import pytest +from flask import url_for + + +@pytest.mark.skip(reason="Not implemented") +def test_frontpage_e2e(running_app, live_server, browser): + """Test the frontpage of the application using Selenium.""" + # pprint(dir(base_client)) + # pprint(dir(base_app)) + running_app.logger.info("test_frontpage_e2e") + running_app.logger.info(running_app.config.keys()) + response = browser.get(url_for("index", _external=True)) + response = browser.get("/") + pprint(dir(response)) + assert True diff --git a/site/tests/fixtures/metadata_fields/__init__.py b/tests/fixtures/__init__.py similarity index 100% rename from site/tests/fixtures/metadata_fields/__init__.py rename to tests/fixtures/__init__.py diff --git a/site/tests/fixtures/communities.py b/tests/fixtures/communities.py similarity index 79% rename from site/tests/fixtures/communities.py rename to tests/fixtures/communities.py index ce0f53638..149f7c1d9 100644 --- a/site/tests/fixtures/communities.py +++ b/tests/fixtures/communities.py @@ -1,19 +1,41 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023, 2024 Knowledge Commons +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the MIT License + +"""Pytest fixtures for communities.""" + +import traceback +from collections.abc import Callable + +import marshmallow as ma import pytest -from invenio_access.permissions import system_identity, authenticated_user +from flask_sqlalchemy import SQLAlchemy +from invenio_access.permissions import authenticated_user, system_identity from invenio_access.utils import get_identity from invenio_accounts.proxies import current_accounts from invenio_communities.communities.records.api import Community -from invenio_communities.members.records.api import Member from invenio_communities.proxies import current_communities -import marshmallow as ma -import traceback -from typing import Callable, Optional +from invenio_rdm_records.proxies import ( + current_rdm_records_service, +) +from invenio_rdm_records.records.api import RDMRecord +from invenio_rdm_records.utils import get_or_create_user + + +def add_community_to_record( + db: SQLAlchemy, record: RDMRecord, community_id: str, default: bool = False +) -> None: + """Add a community to a record.""" + record.parent.communities.add(community_id, default=default) # type: ignore + record.parent.commit() # type: ignore + db.session.commit() # type: ignore + current_rdm_records_service.indexer.index(record, arguments={"refresh": True}) def make_community_member(user_id: int, role: str, community_id: str) -> None: - """ - Make a member of a community. - """ + """Make a member of a community.""" current_communities.service.members.add( system_identity, community_id, @@ -24,9 +46,7 @@ def make_community_member(user_id: int, role: str, community_id: str) -> None: @pytest.fixture(scope="function") def communities_links_factory(): - """ - Create links for communities for testing. - """ + """Create links for communities for testing.""" def assemble_links(community_id: str, slug: str): return { @@ -55,11 +75,10 @@ def assemble_links(community_id: str, slug: str): @pytest.fixture(scope="function") def group_communities_data_factory(): - """ - Create metadata for group collections for testing. - """ + """Create metadata for group collections for testing.""" def assemble_data() -> list[dict]: + """Create metadata for group collections for testing.""" communities_data = [] groups_data = { "knowledgeCommons": [ @@ -144,7 +163,7 @@ def assemble_data() -> list[dict]: "kcr:commons_instance": instance, "kcr:commons_group_id": c[0], "kcr:commons_group_name": c[1], - "kcr:commons_group_description": (f"{c[1]} description"), + "kcr:commons_group_description": f"{c[1]} description", "kcr:commons_group_visibility": "public", }, } @@ -158,30 +177,33 @@ def assemble_data() -> list[dict]: def minimal_community_factory( app, db, user_factory, create_communities_custom_fields, requests_mock, monkeypatch ): - """ - Create a minimal community for testing. + """Create a minimal community for testing. Returns a function that can be called to create a minimal community for testing. That function returns the created community record. """ def create_minimal_community( - owner: Optional[int] = None, - slug: Optional[str] = None, - metadata: dict = {}, - access: dict = {}, - custom_fields: dict = {}, - members: dict = {"reader": [], "curator": [], "manager": [], "owner": []}, + owner: int | None = None, + slug: str | None = None, + metadata: dict | None = None, + access: dict | None = None, + custom_fields: dict | None = None, + members: dict | None = None, mock_search_api: bool = True, - ): - """ - Create a minimal community for testing. + ) -> Community: + """Create a minimal community for testing. Allows overriding of default metadata, access, and custom fields values. Also allows specifying the members of the community with their roles. If no owner is specified, a new user is created and used as the owner. """ + metadata = metadata or {} + access = access or {} + custom_fields = custom_fields or {} + members = members or {"reader": [], "curator": [], "manager": [], "owner": []} + # Mock the search API for the community if mock_search_api: # Set up mock subscriber and intercept message to callback @@ -204,7 +226,12 @@ def create_minimal_community( ) # noqa: E501 if owner is None: - owner = user_factory().user.id + owner_user = get_or_create_user( + email="myuser@inveniosoftware.org", + ) + if not owner_user: + owner_user = user_factory() + owner = owner_user.id slug = slug or "my-community" access_data = { @@ -272,8 +299,7 @@ def create_minimal_community( def sample_communities_factory( app, db, create_communities_custom_fields, group_communities_data_factory ) -> Callable: - """ - Create communities for testing linked to commons groups. + """Create communities for testing linked to commons groups. Returns a function that can be called to create communities for testing with the extra metadata linking them to commons groups. If the function @@ -281,21 +307,22 @@ def sample_communities_factory( it will use those instead of the default metadata. Otherwise, it will use the default list returned by the `group_communities_data_set` function. - Args: - app: The Flask application object fixture. - db: The database object fixture. - create_communities_custom_fields: A fixture that creates custom fields - for kcworks communities. + Parameters: + app (Flask): The Flask application object fixture. + db (SQLAlchemy): The database object fixture. + create_communities_custom_fields (Callable): A fixture that creates + custom fields for kcworks communities. + group_communities_data_factory (Callable): A fixture that creates + metadata for group collections for testing. Returns: Callable: A function that creates communities for testing linked to commons groups. """ - def create_communities(metadata: list[dict] = []) -> None: - """ - Create communities for testing linked to commons groups. - """ + def create_communities(metadata: list[dict] | None = None) -> None: + """Create communities for testing linked to commons groups.""" + metadata = metadata or [] communities = current_communities.service.read_all( identity=system_identity, fields=["slug"] ) diff --git a/site/tests/fixtures/custom_fields.py b/tests/fixtures/custom_fields.py similarity index 87% rename from site/tests/fixtures/custom_fields.py rename to tests/fixtures/custom_fields.py index efacffc21..bc384ee44 100644 --- a/site/tests/fixtures/custom_fields.py +++ b/tests/fixtures/custom_fields.py @@ -1,6 +1,17 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023, 2024 Knowledge Commons +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the MIT License + +"""Pytest fixtures for custom fields.""" + import pytest from invenio_communities.proxies import current_communities -from invenio_rdm_records.proxies import current_rdm_records +from invenio_rdm_records.contrib.codemeta import ( + CODEMETA_CUSTOM_FIELDS, + CODEMETA_NAMESPACE, +) from invenio_rdm_records.contrib.imprint import ( IMPRINT_CUSTOM_FIELDS, IMPRINT_NAMESPACE, @@ -9,18 +20,15 @@ JOURNAL_CUSTOM_FIELDS, JOURNAL_NAMESPACE, ) -from invenio_rdm_records.contrib.thesis import ( - THESIS_CUSTOM_FIELDS, - THESIS_NAMESPACE, -) from invenio_rdm_records.contrib.meeting import ( MEETING_CUSTOM_FIELDS, MEETING_NAMESPACE, ) -from invenio_rdm_records.contrib.codemeta import ( - CODEMETA_CUSTOM_FIELDS, - CODEMETA_NAMESPACE, +from invenio_rdm_records.contrib.thesis import ( + THESIS_CUSTOM_FIELDS, + THESIS_NAMESPACE, ) +from invenio_rdm_records.proxies import current_rdm_records from invenio_records_resources.services.custom_fields import ( TextCF, ) @@ -35,36 +43,37 @@ from invenio_search.engine import dsl from invenio_search.engine import search as search_engine from invenio_search.utils import build_alias_name -from .metadata_fields.kcr_metadata_fields import ( - KCR_CUSTOM_FIELDS, - KCR_NAMESPACE, +from marshmallow_utils.fields import SanitizedUnicode + +from .metadata_fields.hclegacy_groups_for_deposit import ( + HCLEGACY_GROUPS_FOR_DEPOSIT_FIELD, ) -from .metadata_fields.kcr_volumes_fields import ( - KCR_VOLUMES_FIELDS, +from .metadata_fields.hclegacy_metadata_fields import ( + HCLEGACY_CUSTOM_FIELDS, + HCLEGACY_NAMESPACE, +) +from .metadata_fields.kcr_ai_field import ( + KCR_AI_USAGE_FIELDS, ) from .metadata_fields.kcr_media_field import ( KCR_MEDIA_FIELD, ) +from .metadata_fields.kcr_metadata_fields import ( + KCR_CUSTOM_FIELDS, + KCR_NAMESPACE, +) from .metadata_fields.kcr_notes_fields import ( KCR_NOTES_FIELDS, ) +from .metadata_fields.kcr_series_field import ( + KCR_SERIES_FIELDS, +) from .metadata_fields.kcr_user_tags_fields import ( KCR_USER_TAGS_FIELDS, ) -from .metadata_fields.hclegacy_metadata_fields import ( - HCLEGACY_NAMESPACE, - HCLEGACY_CUSTOM_FIELDS, -) -from .metadata_fields.hclegacy_groups_for_deposit import ( - HCLEGACY_GROUPS_FOR_DEPOSIT_FIELD, -) -from .metadata_fields.kcr_ai_field import ( - KCR_AI_USAGE_FIELDS, -) -from .metadata_fields.kcr_series_field import ( - KCR_SERIES_FIELDS, +from .metadata_fields.kcr_volumes_fields import ( + KCR_VOLUMES_FIELDS, ) -from marshmallow_utils.fields import SanitizedUnicode def _(x): @@ -145,9 +154,7 @@ def _(x): { "section": "Linked Commons Group", "hidden": False, - "description": ( - "Information about a Commons group that owns the collection" - ), + "description": "Information about a Commons group that owns the collection", "fields": [ { "field": "kcr:commons_group_name", @@ -156,7 +163,7 @@ def _(x): "label": "Commons Group Name", "placeholder": "", "icon": "", - "description": ("Name of the Commons group."), + "description": "Name of the Commons group.", "disabled": True, }, }, @@ -167,7 +174,7 @@ def _(x): "label": "Commons Group ID", "placeholder": "", "icon": "", - "description": ("ID of the Commons group"), + "description": "ID of the Commons group", "disabled": True, }, }, @@ -192,7 +199,7 @@ def _(x): "label": "Commons Group Description", "placeholder": "", "icon": "", - "description": ("Description of the Commons group."), + "description": "Description of the Commons group.", "disabled": True, }, }, @@ -203,7 +210,7 @@ def _(x): "label": "Commons Group Visibility", "placeholder": "", "icon": "", - "description": ("Visibility of the Commons group."), + "description": "Visibility of the Commons group.", "disabled": True, }, }, @@ -214,9 +221,15 @@ def _(x): @pytest.fixture(scope="function") def create_records_custom_fields(app): + """Creates one or all custom fields for records. + + like with + ```shell + invenio custom-fields records create [field]. + ``` + """ available_fields = app.config.get("RDM_CUSTOM_FIELDS") namespaces = set(app.config.get("RDM_NAMESPACES").keys()) - try: validate_custom_fields( given_fields=None, @@ -224,27 +237,28 @@ def create_records_custom_fields(app): namespaces=namespaces, ) except CustomFieldsException as e: - print( - f"Custom record fields configuration is not valid. {e.description}" - ) + print(f"Custom record fields configuration is not valid. {e.description}") properties = Mapping.properties_for_fields(None, available_fields) try: mycls = current_rdm_records.records_service.config.record_cls rdm_records_index = dsl.Index( build_alias_name(mycls.index._name), - using=current_search_client, + using=current_search_client, # type: ignore ) rdm_records_index.put_mapping(body={"properties": properties}) except search_engine.RequestError as e: print("An error occured while creating custom records fields.") - print(e.info["error"]["reason"]) + print(e) @pytest.fixture(scope="function") def create_communities_custom_fields(app): """Creates one or all custom fields for communities. - $ invenio custom-fields communities create [field]. + like with + ```shell + invenio custom-fields communities create [field]. + ``` """ available_fields = app.config.get("COMMUNITIES_CUSTOM_FIELDS") namespaces = set(app.config.get("COMMUNITIES_NAMESPACES").keys()) @@ -261,12 +275,10 @@ def create_communities_custom_fields(app): try: communities_index = dsl.Index( - build_alias_name( - current_communities.service.config.record_cls.index._name - ), - using=current_search_client, + build_alias_name(current_communities.service.config.record_cls.index._name), + using=current_search_client, # type: ignore ) communities_index.put_mapping(body={"properties": properties}) except search_engine.RequestError as e: print("An error occured while creating custom fields.") - print(e.info["error"]["reason"]) + print(e) diff --git a/site/tests/fixtures/files.py b/tests/fixtures/files.py similarity index 75% rename from site/tests/fixtures/files.py rename to tests/fixtures/files.py index afc4d6ad5..ceb6203e0 100644 --- a/site/tests/fixtures/files.py +++ b/tests/fixtures/files.py @@ -1,12 +1,22 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023, 2024 Knowledge Commons +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the MIT License + +"""Pytest fixtures for files.""" + import hashlib import os def file_md5(bytes_object): + """Calculate the MD5 hash of a bytes object.""" return hashlib.md5(bytes_object).hexdigest() def build_file_links(record_id, base_api_url, filename): + """Build the file links for a record.""" extension = os.path.splitext(filename)[1] links = { diff --git a/site/tests/fixtures/frontend.py b/tests/fixtures/frontend.py similarity index 65% rename from site/tests/fixtures/frontend.py rename to tests/fixtures/frontend.py index 299d27e18..531590e52 100644 --- a/site/tests/fixtures/frontend.py +++ b/tests/fixtures/frontend.py @@ -1,3 +1,11 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023, 2024 MESH Research +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the MIT License + +"""Pytest fixtures for frontend.""" + from flask_webpackext.manifest import ( JinjaManifest, JinjaManifestEntry, @@ -5,11 +13,8 @@ ) -# -# Mock the webpack manifest to avoid having to compile the full assets. -# class MockJinjaManifest(JinjaManifest): - """Mock manifest.""" + """Mock the webpack manifest to avoid having to compile the full assets.""" def __getitem__(self, key): """Get a manifest entry.""" diff --git a/site/tests/fixtures/identifiers.py b/tests/fixtures/identifiers.py similarity index 96% rename from site/tests/fixtures/identifiers.py rename to tests/fixtures/identifiers.py index bcd8d8440..eb24d5e0d 100644 --- a/site/tests/fixtures/identifiers.py +++ b/tests/fixtures/identifiers.py @@ -1,10 +1,19 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023, 2024 Knowledge Commons +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the MIT License + +"""Pytest fixtures for identifiers.""" + import idutils -from invenio_rdm_records.services.pids import providers from invenio_rdm_records.config import ( - always_valid, RDM_RECORDS_IDENTIFIERS_SCHEMES, RDM_RECORDS_PERSONORG_SCHEMES, + always_valid, ) +from invenio_rdm_records.services.pids import providers + from ..helpers.fake_datacite_client import FakeDataCiteClient diff --git a/tests/fixtures/mail.py b/tests/fixtures/mail.py new file mode 100644 index 000000000..ed8d0ef29 --- /dev/null +++ b/tests/fixtures/mail.py @@ -0,0 +1,21 @@ +"""Fixtures for mail-related testing.""" + +import pytest + + +@pytest.fixture +def enable_mail_sending(running_app): + """Temporarily enable mail sending for a test. + + This fixture: + 1. Stores the original value of MAIL_SUPPRESS_SEND + 2. Sets it to False for the test + 3. Restores the original value after the test + """ + original_value = running_app.app.config["MAIL_SUPPRESS_SEND"] + running_app.app.config["MAIL_SUPPRESS_SEND"] = False + + yield # This is where the test runs + + # After the test, restore the original value + running_app.app.config["MAIL_SUPPRESS_SEND"] = original_value diff --git a/site/tests/fixtures/vocabularies/__init__.py b/tests/fixtures/metadata_fields/__init__.py similarity index 100% rename from site/tests/fixtures/vocabularies/__init__.py rename to tests/fixtures/metadata_fields/__init__.py diff --git a/tests/fixtures/metadata_fields/codemeta_fields.py b/tests/fixtures/metadata_fields/codemeta_fields.py new file mode 100644 index 000000000..3af192926 --- /dev/null +++ b/tests/fixtures/metadata_fields/codemeta_fields.py @@ -0,0 +1,71 @@ +"""Metadata field UI configuration for codemeta. + +Implements UI configuration for the following fields: +- code:codeRepository +- code:programmingLanguage +- code:runtimePlatform +- code:operatingSystem +- code:developmentStatus +""" + +from invenio_i18n import lazy_gettext as _ + +KCR_CODEMETA_CUSTOM_FIELDS_UI = { + "section": _("Software"), + "fields": [ + { + "field": "code:codeRepository", + "ui_widget": "TextField", + "props": { + "label": "Repository URL", + "icon": "linkify", + "description": "URL or link where the code repository is hosted.", + }, + }, + { + "field": "code:programmingLanguage", + "ui_widget": "TextField", + "props": { + "label": "Programming language", + "icon": "code", + "description": "Repository's programming language.", + "placeholder": "Python ...", + }, + }, + { + "field": "code:runtimePlatform", + "ui_widget": "TextField", + "props": { + "label": "Runtime platform", + "icon": "cog", + "description": ( + "Repository runtime platform or script interpreter dependencies." + ), + "placeholder": "Java v1, Python2.3, .Net Framework 3.0 ...", + }, + }, + { + "field": "code:operatingSystem", + "ui_widget": "TextField", + "props": { + "label": "Supported operating system", + "icon": "laptop", + "description": "Supported operating systems.", + "placeholder": "Windows 7, OSX 10.6, Android 1.6 ...", + }, + }, + { + "field": "code:developmentStatus", + "ui_widget": "Dropdown", + "props": { + "label": "Development status", + "placeholder": "", + "icon": "heartbeat", + "description": "Repository current status", + "search": False, + "multiple": False, + "clearable": True, + }, + }, + ], +} diff --git a/site/tests/fixtures/metadata_fields/hclegacy_groups_for_deposit.py b/tests/fixtures/metadata_fields/hclegacy_groups_for_deposit.py similarity index 69% rename from site/tests/fixtures/metadata_fields/hclegacy_groups_for_deposit.py rename to tests/fixtures/metadata_fields/hclegacy_groups_for_deposit.py index 318876448..fd3475552 100644 --- a/site/tests/fixtures/metadata_fields/hclegacy_groups_for_deposit.py +++ b/tests/fixtures/metadata_fields/hclegacy_groups_for_deposit.py @@ -1,10 +1,17 @@ +"""Metadata fields for legacy groups for deposit. + +hclegacy:groups_for_deposit The groups that the user belongs to. This value + is an array of objects, each with the keys + "group_name" and "group_identifier". +""" + from invenio_records_resources.services.custom_fields import BaseListCF from marshmallow import fields from marshmallow_utils.fields import SanitizedUnicode class GroupsForDepositCF(BaseListCF): - """Nested custom field.""" + """Custom field for groups for deposit.""" def __init__(self, name, **kwargs): """Constructor.""" @@ -18,12 +25,12 @@ def __init__(self, name, **kwargs): } }, multiple=True, - **kwargs + **kwargs, ) @property def mapping(self): - """groups_for_deposit search mappings.""" + """Groups for deposit search mappings.""" return { "type": "object", "properties": { diff --git a/site/tests/fixtures/metadata_fields/hclegacy_metadata_fields.py b/tests/fixtures/metadata_fields/hclegacy_metadata_fields.py similarity index 89% rename from site/tests/fixtures/metadata_fields/hclegacy_metadata_fields.py rename to tests/fixtures/metadata_fields/hclegacy_metadata_fields.py index de76dde81..0d232befa 100644 --- a/site/tests/fixtures/metadata_fields/hclegacy_metadata_fields.py +++ b/tests/fixtures/metadata_fields/hclegacy_metadata_fields.py @@ -1,6 +1,4 @@ -""" -Custom fields to hold legacy metadata for records imported from the CORE -repository. +"""Metadata fields for legacy metadata for records imported from the CORE. Implements the following fields: @@ -39,10 +37,15 @@ hclegacy:record_creation_date The creation date for the original CORE deposit record. hclegacy:record_identifier A number used in the original Solr indexing. It - concatenates the site ID (id number for HC, MLA, etc.) and original item id number in the - CORE database. + concatenates the site ID (id number for HC, MLA, + etc.) and original item id number in the CORE + database. hclegacy:society The HC societies to which the original uploader of - the CORE deposit belonged. It should include the society from whose site the deposit was made, although this may not be the case for bulk uploads. Possible values are: arlisna, hc, msu, ajs, hastac, sah, aseees, caa, up. + the CORE deposit belonged. It should include the + society from whose site the deposit was made, + although this may not be the case for bulk + uploads. Possible values are: arlisna, hc, msu, + ajs, hastac, sah, aseees, caa, up. hclegacy:submitter_org_memberships The HC organizations to which the user who uploaded the deposit belonged. hclegacy:submitter_affiliation The institutional affiliation of the user @@ -52,19 +55,9 @@ """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import BaseCF, TextCF +from invenio_records_resources.services.custom_fields import TextCF from invenio_records_resources.services.custom_fields.number import IntegerCF -from invenio_records_resources.services.custom_fields.date import ( - ISODateStringCF, -) -from invenio_vocabularies.services.custom_fields import VocabularyCF -from marshmallow import fields, validate -from marshmallow_utils.fields import ( - SanitizedUnicode, - SanitizedHTML, - StrippedHTML, - EDTFDateString, -) +from marshmallow_utils.fields import SanitizedUnicode HCLEGACY_NAMESPACE = { "hclegacy": "", @@ -73,9 +66,12 @@ HCLEGACY_CUSTOM_FIELDS = [ # VocabularyCF( # name="hclegacy:collection", - # vocabulary_id="hcCollections", # controlled vocabulary id defined in the vocabularies.yaml file - # dump_options=True, # True when the list of all possible values will be visible in the dropdown UI component, typically for small vocabularies - # multiple=False, # if the field accepts a list of values (True) or single value (False) + # vocabulary_id="hcCollections", # controlled vocabulary id defined in the + # vocabularies.yaml file + # dump_options=True, # True when the list of all possible values will be + # visible in the dropdown UI component, typically for small vocabularies + # multiple=False, # if the field accepts a list of values (True) or + # single value (False) # field_cls=SanitizedUnicode, # ), TextCF(name="hclegacy:collection"), @@ -97,7 +93,7 @@ field_cls=SanitizedUnicode, ), TextCF(name="hclegacy:record_change_date"), - TextCF( # FIXME: This should be date formatted, but EDTFDateString doesn't accept time + TextCF( # FIXME: This should be date format, but EDTFDateString doesn't accept time name="hclegacy:record_creation_date" # field_cls=EDTFDateString, ), diff --git a/site/tests/fixtures/metadata_fields/imprint_fields.py b/tests/fixtures/metadata_fields/imprint_fields.py similarity index 88% rename from site/tests/fixtures/metadata_fields/imprint_fields.py rename to tests/fixtures/metadata_fields/imprint_fields.py index 960e05d5f..468f3f60e 100644 --- a/site/tests/fixtures/metadata_fields/imprint_fields.py +++ b/tests/fixtures/metadata_fields/imprint_fields.py @@ -1,4 +1,12 @@ -# -*- coding: utf-8 -*- +"""Metadata field UI configuration for KCR imprint. + +Implements UI configuration for the following fields: +- imprint:imprint.title +- imprint:imprint.place +- imprint:imprint.isbn +- imprint:imprint.pages +""" + from invenio_i18n import lazy_gettext as _ KCR_IMPRINT_CUSTOM_FIELDS_UI = { diff --git a/site/tests/fixtures/metadata_fields/journal_fields.py b/tests/fixtures/metadata_fields/journal_fields.py similarity index 95% rename from site/tests/fixtures/metadata_fields/journal_fields.py rename to tests/fixtures/metadata_fields/journal_fields.py index 72d36f04f..f81feb38d 100644 --- a/site/tests/fixtures/metadata_fields/journal_fields.py +++ b/tests/fixtures/metadata_fields/journal_fields.py @@ -3,9 +3,9 @@ # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. -"""Journal custom fields. +"""Journal custom fields UI configuration. -Implements the following fields: +Implements UI configuration for the following fields: - journal.issue - journal.pages - journal.title @@ -14,7 +14,6 @@ from invenio_i18n import lazy_gettext as _ - KCR_JOURNAL_CUSTOM_FIELDS_UI = { "section": _("Journal"), "fields": [ diff --git a/site/tests/fixtures/metadata_fields/kcr_ai_field.py b/tests/fixtures/metadata_fields/kcr_ai_field.py similarity index 78% rename from site/tests/fixtures/metadata_fields/kcr_ai_field.py rename to tests/fixtures/metadata_fields/kcr_ai_field.py index 32d7bcc9d..bb8f7de30 100644 --- a/site/tests/fixtures/metadata_fields/kcr_ai_field.py +++ b/tests/fixtures/metadata_fields/kcr_ai_field.py @@ -1,17 +1,19 @@ -from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - BaseCF, -) +"""Metadata fields for KCR AI usage. + +kcr:ai_usage Information on the use of AI in the production of a work. + This value is an object with the keys "ai_used" and + "ai_description". +""" -# from marshmallow import validate +from invenio_i18n import lazy_gettext as _ +from invenio_records_resources.services.custom_fields import BaseCF from marshmallow.fields import Boolean, Nested -from marshmallow_utils.fields import ( - SanitizedUnicode, -) +from marshmallow_utils.fields import SanitizedUnicode class AiUsageCF(BaseCF): - # """Nested custom field.""" + """Custom field for AI usage.""" + def __init__(self, name, **kwargs): """Constructor.""" super().__init__( @@ -24,15 +26,13 @@ def __init__(self, name, **kwargs): # ) # ), # multiple=False, - **kwargs + **kwargs, ) @property def field(self): """AiUsage fields definitions.""" - return Nested( - {"ai_used": Boolean(), "ai_description": SanitizedUnicode()} - ) + return Nested({"ai_used": Boolean(), "ai_description": SanitizedUnicode()}) @property def mapping(self): diff --git a/site/tests/fixtures/metadata_fields/kcr_media_field.py b/tests/fixtures/metadata_fields/kcr_media_field.py similarity index 89% rename from site/tests/fixtures/metadata_fields/kcr_media_field.py rename to tests/fixtures/metadata_fields/kcr_media_field.py index 5ca5f7b37..b8eed921b 100644 --- a/site/tests/fixtures/metadata_fields/kcr_media_field.py +++ b/tests/fixtures/metadata_fields/kcr_media_field.py @@ -1,16 +1,14 @@ -""" +"""Metadata fields for KCR media. + kcr:media Free user-defined descriptors of the media or materials involved in the creation of a workd. This value is an array of strings. """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - TextCF, -) +from invenio_records_resources.services.custom_fields import TextCF from marshmallow_utils.fields import SanitizedUnicode - KCR_MEDIA_FIELD = [ TextCF(name="kcr:media", field_cls=SanitizedUnicode, multiple=True), ] @@ -31,8 +29,7 @@ ), "icon": "tags", "description": ( - "The media and materials used in the production of the" - " work." + "The media and materials used in the production of the" " work." ), }, } diff --git a/site/tests/fixtures/metadata_fields/kcr_metadata_fields.py b/tests/fixtures/metadata_fields/kcr_metadata_fields.py similarity index 91% rename from site/tests/fixtures/metadata_fields/kcr_metadata_fields.py rename to tests/fixtures/metadata_fields/kcr_metadata_fields.py index 662b5fd67..bc944052e 100644 --- a/site/tests/fixtures/metadata_fields/kcr_metadata_fields.py +++ b/tests/fixtures/metadata_fields/kcr_metadata_fields.py @@ -1,4 +1,5 @@ -""" +"""Metadata fields for KCWorks. + kcr:commons_domain The commons domain from which the record was deposited. kcr:chapter_label The title or heading for a chapter. Used primarily for bookSection resource type. @@ -17,12 +18,9 @@ """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - TextCF, - # EDTFDateStringCF, -) +from invenio_records_resources.services.custom_fields import TextCF from marshmallow import validate -from marshmallow_utils.fields import SanitizedUnicode, EDTFDateTimeString +from marshmallow_utils.fields import EDTFDateTimeString, SanitizedUnicode KCR_NAMESPACE = { "kcr": "", @@ -149,8 +147,9 @@ "ui_widget": "TextField", "props": { "label": _("Commons domain"), - "description": "The Knowledge Commons domain from which the " - "deposit is uploaded", + "description": ( + "The Knowledge Commons domain from which the " "deposit is uploaded" + ), }, "icon": "world", } @@ -184,8 +183,7 @@ "label": "Project title", "placeholder": "", "icon": "briefcase", - "description": "Title for the larger project of which this work " - "is a part.", + "description": "Title for the larger project of which this work " "is a part.", }, } @@ -207,8 +205,9 @@ "label": "Submitter user name", "placeholder": "", "icon": "user", - "description": "Knowledge Commons username for the person " - "submitting this deposit", + "description": ( + "Knowledge Commons username for the person " "submitting this deposit" + ), }, } @@ -217,8 +216,7 @@ "ui_widget": "TextField", "props": { "label": _("Meeting organization"), - "description": "The organization sponsoring the meeting or " - "conference", + "description": "The organization sponsoring the meeting or " "conference", }, "icon": "group", } @@ -240,8 +238,10 @@ "template": "kcworks/content_warning.html", "props": { "label": _("Content warning"), - "description": "Does this deposit contain any potentially " - "difficult content you would like to flag for viewers?", + "description": ( + "Does this deposit contain any potentially " + "difficult content you would like to flag for viewers?" + ), "icon": "warning sign", }, "icon": "warning sign", diff --git a/site/tests/fixtures/metadata_fields/kcr_notes_fields.py b/tests/fixtures/metadata_fields/kcr_notes_fields.py similarity index 65% rename from site/tests/fixtures/metadata_fields/kcr_notes_fields.py rename to tests/fixtures/metadata_fields/kcr_notes_fields.py index 452ab0055..6a975506d 100644 --- a/site/tests/fixtures/metadata_fields/kcr_notes_fields.py +++ b/tests/fixtures/metadata_fields/kcr_notes_fields.py @@ -1,40 +1,35 @@ -""" +"""Metadata fields for KCR notes. + kcr:notes Notes related to the record. This value is an array of objects, each of which has the keys "note_text", - "note_text_sanitized", and "note_description". The "note_text_sanitized" field contains the same string as "note_text" but with any allowed html tags stripped out. + "note_text_sanitized", and "note_description". The + "note_text_sanitized" field contains the same string as + "note_text" but with any allowed html tags stripped out. """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - BaseCF, - TextCF, - IntegerCF -) -from marshmallow import fields, validate -from marshmallow_utils.fields import ( - SanitizedUnicode, - SanitizedHTML, - StrippedHTML -) -from .kcr_metadata_fields import KCR_NAMESPACE +from invenio_records_resources.services.custom_fields import BaseCF, TextCF +from marshmallow import fields +from marshmallow_utils.fields import SanitizedHTML, SanitizedUnicode, StrippedHTML class NotesCF(BaseCF): -# """Nested custom field.""" + """Custom field for notes.""" + def __init__(self, name, **kwargs): """Constructor.""" super().__init__( - name, - field_cls=fields.Nested, - field_args={ - 'nested': { - "note_text": SanitizedHTML(), - "note_text_sanitized": StrippedHTML(), - "note_description": SanitizedUnicode(), - } - }, - multiple=True, - **kwargs + name, + field_cls=fields.Nested, # type: ignore + field_args={ + "nested": { + "note_text": SanitizedHTML(), + "note_text_sanitized": StrippedHTML(), + "note_description": SanitizedUnicode(), + } + }, + multiple=True, + **kwargs, ) @property @@ -67,8 +62,7 @@ def mapping(self): "label": _("Description"), "placeholder": "", "description": _( - "A few words describing the kind of notes recorded " - "here." + "A few words describing the kind of notes recorded " "here." ), }, "note_text": { diff --git a/site/tests/fixtures/metadata_fields/kcr_series_field.py b/tests/fixtures/metadata_fields/kcr_series_field.py similarity index 59% rename from site/tests/fixtures/metadata_fields/kcr_series_field.py rename to tests/fixtures/metadata_fields/kcr_series_field.py index 8bbd257cc..78b9b9284 100644 --- a/site/tests/fixtures/metadata_fields/kcr_series_field.py +++ b/tests/fixtures/metadata_fields/kcr_series_field.py @@ -1,41 +1,37 @@ -#! /usr/bin/env python -# -*- coding: utf-8 -*- -""" -kcr:notes Notes related to the record. This value is an array of - objects, each of which has the keys "note_text", - "note_text_sanitized", and "note_description". The "note_text_sanitized" field contains the same string as "note_text" but with any allowed html tags stripped out. +"""Metadata fields for KCR series. + +kcr:book_series Information on the series of books in which the current + item appears. This value is an array of objects, each + of which has the keys "series_title" and "series_volume". """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - BaseCF, - BaseListCF, - TextCF, - IntegerCF, -) -from marshmallow import fields, validate -from marshmallow_utils.fields import SanitizedUnicode, SanitizedHTML, StrippedHTML -from .kcr_metadata_fields import KCR_NAMESPACE +from invenio_records_resources.services.custom_fields import BaseListCF +from marshmallow import fields +from marshmallow_utils.fields import SanitizedUnicode class BookSeriesCF(BaseListCF): + """Custom field for book series.""" + def __init__(self, name, **kwargs): """Constructor.""" super().__init__( name, field_cls=fields.Nested, - field_args=dict( - nested=dict( - series_title=SanitizedUnicode(), series_volume=SanitizedUnicode() - ) - ), + field_args={ + "nested": { + "series_title": SanitizedUnicode(), + "series_volume": SanitizedUnicode(), + } + }, multiple=True, - **kwargs + **kwargs, ) @property def mapping(self): - """Notes search mappings.""" + """Book series search mappings.""" return { "type": "object", "properties": { diff --git a/site/tests/fixtures/metadata_fields/kcr_user_tags_fields.py b/tests/fixtures/metadata_fields/kcr_user_tags_fields.py similarity index 66% rename from site/tests/fixtures/metadata_fields/kcr_user_tags_fields.py rename to tests/fixtures/metadata_fields/kcr_user_tags_fields.py index 35c85a391..8aed3aa23 100644 --- a/site/tests/fixtures/metadata_fields/kcr_user_tags_fields.py +++ b/tests/fixtures/metadata_fields/kcr_user_tags_fields.py @@ -1,39 +1,27 @@ -""" +"""Metadata fields for user tags. + kcr:user_defined_tags Free user-defined tags associated with the current item. This value is an array of objects, each with the keys "tag_label" and "tag_identifier". The - tag_identifier is an integer assigned automatically. The tag_label is the string entered - by the user. + tag_identifier is an integer assigned automatically. + The tag_label is the string entered by the user. """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - BaseListCF, - TextCF, - IntegerCF, -) -from marshmallow import fields, Schema, validate -from marshmallow_utils.fields import ( - SanitizedUnicode, - SanitizedHTML, - StrippedHTML, -) -from .kcr_metadata_fields import KCR_NAMESPACE +from invenio_records_resources.services.custom_fields import BaseListCF, TextCF +from marshmallow_utils.fields import SanitizedUnicode class UserTagsCF(BaseListCF): - """Nested custom field. + """Custom field for user tags. + DEPRECATED """ def __init__(self, name, **kwargs): """Constructor.""" super().__init__( - name, - field_cls=SanitizedUnicode(), - field_args={}, - multiple=True, - **kwargs + name, field_cls=SanitizedUnicode(), field_args={}, multiple=True, **kwargs ) # @property @@ -59,9 +47,7 @@ def mapping(self): KCR_USER_TAGS_FIELDS = [ - TextCF( - name="kcr:user_defined_tags", field_cls=SanitizedUnicode, multiple=True - ), + TextCF(name="kcr:user_defined_tags", field_cls=SanitizedUnicode, multiple=True), ] @@ -78,7 +64,10 @@ def mapping(self): "Type your keywords here (press 'enter' to add each one)" ), "icon": "tags", - "description": "Words describing this material that do not appear in the subject terms above.", + "description": ( + "Words describing this material that do not appear in the " + "subject terms above." + ), }, } ], diff --git a/site/tests/fixtures/metadata_fields/kcr_volumes_fields.py b/tests/fixtures/metadata_fields/kcr_volumes_fields.py similarity index 84% rename from site/tests/fixtures/metadata_fields/kcr_volumes_fields.py rename to tests/fixtures/metadata_fields/kcr_volumes_fields.py index e3cf00ead..6ef536529 100644 --- a/site/tests/fixtures/metadata_fields/kcr_volumes_fields.py +++ b/tests/fixtures/metadata_fields/kcr_volumes_fields.py @@ -1,4 +1,5 @@ -""" +"""Metadata fields for KCR volumes. + kcr:volumes Information on the total number of volumes and the current volume identifier for multi-volume works. This value is an object with the keys "total_volumes" (for the total number of @@ -9,18 +10,9 @@ """ from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.custom_fields import ( - BaseCF, - TextCF, - IntegerCF, -) -from marshmallow import fields, validate -from marshmallow_utils.fields import ( - SanitizedUnicode, - SanitizedHTML, - StrippedHTML, -) -from .kcr_metadata_fields import KCR_NAMESPACE +from invenio_records_resources.services.custom_fields import BaseCF +from marshmallow import fields +from marshmallow_utils.fields import SanitizedUnicode class VolumesCF(BaseCF): @@ -64,7 +56,8 @@ def mapping(self): "volume": { "label": _("Volume"), "placeholder": "", - # "description": _("The number or label of the volume containing this deposit") + # "description": _("The number or label of the volume containing + # this deposit") "icon": "book", }, }, diff --git a/site/tests/fixtures/metadata_fields/meeting_fields.py b/tests/fixtures/metadata_fields/meeting_fields.py similarity index 98% rename from site/tests/fixtures/metadata_fields/meeting_fields.py rename to tests/fixtures/metadata_fields/meeting_fields.py index c45332c98..2651e2de7 100644 --- a/site/tests/fixtures/metadata_fields/meeting_fields.py +++ b/tests/fixtures/metadata_fields/meeting_fields.py @@ -3,7 +3,7 @@ # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. -"""Journal custom fields. +"""Metadata fields for meeting. Implements the following fields: - meeting:meeting.title @@ -18,7 +18,6 @@ from invenio_i18n import lazy_gettext as _ - KCR_MEETING_CUSTOM_FIELDS_UI = { "section": _("Conference"), "fields": [ diff --git a/site/tests/fixtures/records.py b/tests/fixtures/records.py similarity index 69% rename from site/tests/fixtures/records.py rename to tests/fixtures/records.py index 6b3d84797..8165a58aa 100644 --- a/site/tests/fixtures/records.py +++ b/tests/fixtures/records.py @@ -1,26 +1,46 @@ +# Part of Knowledge Commons Works +# +# Copyright (C) 2025 MESH Research. +# +# Knowledge Commons Works is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Test fixtures for records.""" + import copy +import re +from datetime import timedelta from pprint import pformat -from flask import current_app, Flask -import pytest +from typing import Any + import arrow +import pytest from arrow import Arrow -import datetime +from flask import Flask, current_app from flask_principal import Identity from invenio_access.permissions import system_identity from invenio_accounts.proxies import current_accounts from invenio_rdm_records.proxies import current_rdm_records_service as records_service from invenio_record_importer_kcworks.utils.utils import replace_value_in_nested_dict -from typing import Optional, Any +from invenio_records_resources.services.records.results import RecordItem + +from ..helpers.utils import remove_value_by_path +from .communities import add_community_to_record from .files import build_file_links from .vocabularies.resource_types import RESOURCE_TYPES @pytest.fixture(scope="function") -def minimal_draft_record_factory(running_app, db, minimal_record_metadata): +def minimal_draft_record_factory(running_app, db, record_metadata): + """Factory for creating a minimal draft record.""" + def _factory( - metadata: Optional[dict] = None, identity: Optional[Identity] = None, **kwargs + metadata: dict | None = None, + identity: Identity | None = None, + **kwargs: Any, ): - input_metadata = metadata or minimal_record_metadata["in"] + """Create a minimal draft record.""" + input_metadata = metadata or record_metadata().metadata_in identity = identity or system_identity return records_service.create(identity, input_metadata) @@ -28,131 +48,62 @@ def _factory( @pytest.fixture(scope="function") -def minimal_published_record_factory(running_app, db, minimal_record_metadata): - def _factory( - metadata: Optional[dict] = None, identity: Optional[Identity] = None, **kwargs - ): - input_metadata = metadata or minimal_record_metadata["in"] - identity = identity or system_identity - draft = records_service.create(identity, input_metadata) - return records_service.publish(identity, draft.id) - - return _factory - - -def compare_metadata_draft(running_app): - app = running_app.app - - def _comparison_factory( - actual, expected, community_list: list[dict] = [], now: Arrow = arrow.utcnow() - ): - """ - Compare the actual and expected metadata dictionaries. - - Does not check the following fields: - - id - parent.id - revision_id - - Some fields are only compared to the present time: - - created - updated +def minimal_published_record_factory(running_app, db, record_metadata): + """Factory for creating a minimal published record.""" - Args: - actual (dict): The actual metadata dictionary. - expected (dict): The expected metadata dictionary. - now (Arrow, optional): The current time. Defaults to arrow.utcnow(). + def _factory( + metadata: dict | None = None, + identity: Identity | None = None, + community_list: list[str] | None = None, + set_default: bool = False, + **kwargs: Any, + ) -> RecordItem: + """Create a minimal published record. + + Parameters: + metadata (dict, optional): The metadata of the record. If not provided, + the minimal record metadata will be used. + identity (Identity, optional): The identity of the user. If not provided, + the system identity will be used. + community_list (list[str], optional): The list of community IDs to add to + the record (if any). Must be community UUIDs rather than slugs. + set_default (bool, optional): If True, the first community in the list + will be set as the default community for the record. Returns: - bool: True if the actual metadata dictionary matches the expected - metadata dictionary, False otherwise. + The published record as a service layer RecordItem. """ - try: - assert now - arrow.get(actual["created"]) < datetime.timedelta(seconds=1) - assert actual["custom_fields"] == {} - assert "expires_at" not in actual.keys() - assert actual["files"]["count"] == expected["files"]["count"] - assert actual["files"]["enabled"] == expected["files"]["enabled"] - for k, v in actual["files"]["entries"].items(): - assert v["access"] == expected["files"]["entries"][k]["access"] - # assert v["checksum"] # FIXME: Add checksum - assert v["ext"] == expected["files"]["entries"][k]["ext"] - assert v["key"] == expected["files"]["entries"][k]["key"] - assert v["mimetype"] == expected["files"]["entries"][k]["mimetype"] - assert v["size"] == expected["files"]["entries"][k]["size"] - assert ( - v["storage_class"] - == expected["files"]["entries"][k]["storage_class"] - ) - assert v["metadata"] == expected["files"]["entries"][k]["metadata"] - assert v["links"] == build_file_links( - actual["id"], app.config["SITE_API_URL"], k - ) - assert actual["files"]["order"] == expected["files"]["order"] - assert actual["files"]["total_bytes"] == expected["files"]["total_bytes"] - - assert actual["is_draft"] - assert not actual["is_published"] - assert actual["links"] == TestRecordMetadata.build_draft_record_links( - actual["id"], app.config["SITE_API_URL"], app.config["SITE_UI_URL"] - ) - assert actual["media_files"] == { - "count": 0, - "enabled": False, - "entries": {}, - "order": [], - "total_bytes": 0, - } - assert actual["metadata"]["creators"] == expected["metadata"]["creators"] - assert ( - actual["metadata"]["publication_date"] - == expected["metadata"]["publication_date"] - ) - assert actual["metadata"]["publisher"] == expected["metadata"]["publisher"] - assert ( - actual["metadata"]["resource_type"] - == expected["metadata"]["resource_type"] - ) - assert actual["metadata"]["title"] == expected["metadata"]["title"] - assert actual["parent"]["access"] == expected["parent"]["access"] - assert actual["parent"]["communities"]["ids"] == [ - c["id"] for c in community_list - ] - assert actual["pids"] == { - "doi": { - "client": "datacite", - "identifier": f"10.17613/{actual['id']}", - "provider": "datacite", - }, - "oai": { - "identifier": f"oai:{app.config['SITE_UI_URL']}:{actual['id']}", - "provider": "oai", - }, - } - assert actual["revision_id"] == 3 - assert actual["stats"] == expected["stats"] - assert actual["status"] == "draft" - assert now - arrow.get(actual["updated"]) < datetime.timedelta(seconds=1) - assert actual["versions"] == expected["versions"] - return True - except AssertionError as e: - app.logger.error(f"Assertion failed: {e}") - raise e + input_metadata = metadata or record_metadata().metadata_in + identity = identity or system_identity + draft = records_service.create(identity, input_metadata) + published = records_service.publish(identity, draft.id) + if community_list: + record = published._record + add_community_to_record(db, record, community_list[0], default=set_default) + for community in community_list[1:] if len(community_list) > 1 else []: + add_community_to_record(db, record, community, default=False) + # Refresh the record to get the latest state. + published = records_service.read(identity, published.id) + return published - return _comparison_factory + return _factory @pytest.fixture(scope="function") def record_metadata(running_app): + """Factory for creating a record metadata object.""" + def _factory( - metadata_in: dict = {}, + metadata_in: dict | None = None, app: Flask = current_app, - community_list: list[dict] = [], - file_entries: dict = {}, - owner_id: Optional[str] = "1", + community_list: list[dict] | None = None, + file_entries: dict | None = None, + owner_id: str | None = "1", ): + """Create a record metadata object.""" + metadata_in = metadata_in or {} + community_list = community_list or [] + file_entries = file_entries or {} return TestRecordMetadata( metadata_in=metadata_in, app=running_app.app, @@ -277,24 +228,28 @@ def my_test_function(record_metadata): def __init__( self, - metadata_in: dict = {}, + metadata_in: dict | None = None, app: Flask = current_app, - community_list: list[dict] = [], - file_entries: dict = {}, - owner_id: Optional[str] = "1", + community_list: list[dict] | None = None, + file_entries: dict | None = None, + owner_id: str | None = "1", ): - """ - Initialize the TestRecordMetadata object. + """Initialize the TestRecordMetadata object. - Args: + Parameters: metadata_in (dict): The metadata of the record. app (Flask, optional): The Flask application. Defaults to current_app. community_list (list[dict], optional): The list of communities, each expected to be a dict with the following keys: id, access, children, custom_fields, deletion_status, links, metadata, revision_id, slug, updated. Defaults to []. + file_entries (dict, optional): The file entries of the record. + Defaults to {}. owner_id (str, optional): The record owner ID. Defaults to "1". """ + metadata_in = metadata_in or {} + community_list = community_list or [] + file_entries = file_entries or {} self.app = app starting_metadata_in = copy.deepcopy(TestRecordMetadata.default_metadata_in) self._metadata_in: dict = metadata_in if metadata_in else starting_metadata_in @@ -302,15 +257,18 @@ def __init__( self.file_entries = file_entries self.owner_id = owner_id - def update_metadata(self, metadata_updates: dict[str, Any] = {}) -> None: - """ - Update the basic metadata dictionary for the record. + def update_metadata(self, metadata_updates: dict[str, Any] | None = None) -> None: + """Update the basic metadata dictionary for the record. - Args: + Parameters: metadata_updates (dict): A dictionary of metadata updates. The keys are - bar separated (NOT dot separated) paths to the values to update. The values - are the new values to update the metadata with at those paths. + bar separated (NOT dot separated) paths to the values to update. The + values are the new values to update the metadata with at those paths. + + Returns: + None """ + metadata_updates = metadata_updates or {} for key, val in metadata_updates.items(): new_metadata_in = replace_value_in_nested_dict(self.metadata_in, key, val) self._metadata_in = ( @@ -329,8 +287,14 @@ def metadata_in(self) -> dict: return self._metadata_in @staticmethod - def build_draft_record_links(record_id, base_url, ui_base_url): - return { + def build_draft_record_links( + record_id: str, + base_url: str, + ui_base_url: str, + doi: str | None = None, + ) -> dict: + """Build the draft record links.""" + links = { "self": f"{base_url}/records/{record_id}/draft", "self_html": f"{ui_base_url}/uploads/{record_id}", "self_iiif_manifest": f"{base_url}/iiif/draft:{record_id}/manifest", @@ -359,6 +323,9 @@ def build_draft_record_links(record_id, base_url, ui_base_url): ), "requests": f"{base_url}/records/{record_id}/requests", } + if doi: + links["doi"] = f"https://handle.stage.datacite.org/{doi}" + return links @staticmethod def build_published_record_links( @@ -367,7 +334,8 @@ def build_published_record_links( ui_base_url: str, parent_id: str, record_doi: str = "", - ): + ) -> dict: + """Build the published record links.""" if not record_doi: record_doi = f"10.17613/{record_id}" parent_doi = f"10.17613/{parent_id}" @@ -406,23 +374,29 @@ def draft(self): Fields that can't be set before record creation: """ metadata_out_draft = copy.deepcopy(self.metadata_in) - metadata_out_draft.get("access", {})["embargo"] = { + if not metadata_out_draft.get("access", {}): + metadata_out_draft["access"] = { + "files": "public", + "record": "public", + } + metadata_out_draft["access"]["embargo"] = { "active": False, "reason": None, } - metadata_out_draft.get("access", {})["status"] = "metadata-only" + metadata_out_draft["access"]["status"] = "metadata-only" metadata_out_draft["deletion_status"] = {"is_deleted": False, "status": "P"} metadata_out_draft["custom_fields"] = self.metadata_in.get("custom_fields", {}) metadata_out_draft["is_draft"] = True metadata_out_draft["is_published"] = False - current_resource_type = [ - t - for t in copy.deepcopy(RESOURCE_TYPES) - if t["id"] == metadata_out_draft["metadata"]["resource_type"]["id"] - ][0] - metadata_out_draft["metadata"]["resource_type"]["title"] = ( - current_resource_type["title"] - ) + if metadata_out_draft["metadata"].get("resource_type", {}): + current_resource_type = [ + t + for t in copy.deepcopy(RESOURCE_TYPES) + if t["id"] == metadata_out_draft["metadata"]["resource_type"].get("id") + ][0] + metadata_out_draft["metadata"]["resource_type"]["title"] = ( + current_resource_type["title"] + ) metadata_out_draft["versions"] = { "index": 1, "is_latest": False, @@ -447,7 +421,7 @@ def draft(self): "access": { "grants": [], "links": [], - "owned_by": {"user": "1"}, + "owned_by": {"user": str(self.owner_id)}, "settings": { "accept_conditions_text": None, "allow_guest_requests": False, @@ -530,6 +504,15 @@ def draft(self): } metadata_out_draft["status"] = "draft" metadata_out_draft["updated"] = "" + if "rights" in metadata_out_draft["metadata"].keys(): + for idx in range(len(metadata_out_draft["metadata"]["rights"])): + metadata_out_draft["metadata"]["rights"][idx].get("props", {})[ + "scheme" + ] = "spdx" + try: + del metadata_out_draft["metadata"]["rights"][idx]["icon"] + except KeyError: + pass return metadata_out_draft @property @@ -569,61 +552,234 @@ def published(self): ] return metadata_out_published - def __str__(self): + def __str__(self) -> str: + """Return a string representation of the TestRecordMetadata object.""" return pformat(self.metadata_in) - def __repr__(self): + def __repr__(self) -> str: + """Return a string representation of the TestRecordMetadata object.""" return self.__str__() - def compare_draft(self, metadata_out_draft): - assert self.draft == metadata_out_draft + def compare_draft( + self, + actual: dict, + expected: dict | None = None, + skip_fields: list[str] | None = None, + by_api: bool = False, + now: Arrow | None = None, + ) -> bool: + """Compare the draft metadata with the expected metadata by assertion. + + Checks to see that the supplied metadata record is the same as should result + from creating a draft with the input metadata in self.metadata_in. + + Can also be used with a provided `expected` metadata dictionary to simply check + for equality against an expected result. + + If the actual metadata results from a record operation that included validation + errors, the `skip_fields` parameter can be used to skip the fields that are + expected to missing from the actual metadata due to the validation errors. This + should be a list of field paths (e.g. ["metadata.title", + "metadata.creators.0.name"]) that are expected to be missing from the actual + metadata, even though they were provided in the input metadata. + + Parameters: + actual (dict): The actual metadata dictionary to be checked. + expected (dict): The expected metadata dictionary. If not provided, + the draft metadata in self.draft will be used. + by_api (bool, optional): Whether to compare the metadata as it appears + in the return value from the REST API. Otherwise the format expected + will be that returned from the RDMRecordService method. Defaults to + False. + now (Arrow, optional): The current time. Defaults to arrow.utcnow(). + skip_fields (list[str], optional): A list of field paths that are expected + to be missing from the actual metadata due to validation errors. + + Raises: + AssertionError: If the actual metadata dictionary does not match the + expected metadata dictionary. + + Returns: + bool: True if the actual metadata dictionary matches the expected + metadata dictionary, otherwise raises an error. + + Note: + Does not check the following fields: + - revision_id + + Some fields are only checked for correct format: + - id + - parent.id + + Some fields are only compared to the present time: + - created + - updated + - expires_at + """ + app = self.app + expected = self.draft.copy() if not expected else expected + for skip_field in skip_fields or []: + print(f"skip_field: {skip_field}") + expected = remove_value_by_path(expected, skip_field) + now = now or arrow.utcnow() + app.logger.info(f"actual: {pformat(actual)}") + print(f"actual: {pformat(actual['pids'])}") + print(f"expected: {pformat(expected['pids'])}") + + # ensure the id is in the correct format + assert re.match(r"^[a-z0-9]{5}-[a-z0-9]{5}$", actual["id"]) + + if by_api: + expected = self._as_via_api(expected, is_draft=True) + else: + expected["parent"]["access"]["owned_by"] = None # TODO: Why? + expected["stats"] = None + + # Check that timestamps are in the correct relative range + assert now - arrow.get(actual["created"]) < timedelta(seconds=7) + assert now - arrow.get(actual["updated"]) < timedelta(seconds=7) + assert "expires_at" in actual.keys() + assert ( + arrow.get(actual["expires_at"]).format("YYYY-MM-DD HH:mm:ss.SSSSSS") + == actual["expires_at"] + ) + assert now - arrow.get(actual["expires_at"]) < timedelta(hours=8) + + assert actual["access"] == expected["access"] + + assert actual["custom_fields"] == expected["custom_fields"] + + # Check files including any entries + assert actual["files"]["count"] == expected["files"]["count"] + assert actual["files"]["enabled"] == expected["files"]["enabled"] + for k, v in actual["files"]["entries"].items(): + assert v["access"] == expected["files"]["entries"][k]["access"] + if "checksum" in expected["files"]["entries"][k]: + assert v["checksum"] == expected["files"]["entries"][k]["checksum"] + assert v["ext"] == expected["files"]["entries"][k]["ext"] + assert v["key"] == expected["files"]["entries"][k]["key"] + assert v["mimetype"] == expected["files"]["entries"][k]["mimetype"] + assert v["size"] == expected["files"]["entries"][k]["size"] + assert ( + v["storage_class"] == expected["files"]["entries"][k]["storage_class"] + ) + if v["metadata"]: + if v["key"] == "sample.jpg": # meta drawn from file + expected["files"]["entries"][k]["metadata"] = { + "height": 1672, + "width": 1254, + } + assert v["metadata"] == expected["files"]["entries"][k]["metadata"] + else: + assert not expected["files"]["entries"][k]["metadata"] + assert v["links"] == build_file_links( + actual["id"], app.config["SITE_API_URL"], k + ) + assert actual["files"]["order"] == expected["files"]["order"] + assert actual["files"]["total_bytes"] == expected["files"]["total_bytes"] + + # Check media files including any entries + # TODO: Add checks for media files + assert actual["media_files"] == expected["media_files"] + + # Check links, with DOI if one was provided + links_kwargs = ( + {"doi": actual["pids"]["doi"]["identifier"]} + if actual.get("pids", {}).get("doi", {}).get("identifier") + else {} + ) + assert actual["links"] == TestRecordMetadata.build_draft_record_links( + actual["id"], + app.config["SITE_API_URL"], + app.config["SITE_UI_URL"], + **links_kwargs, + ) + + # Check metadata fields + assert set(actual["metadata"].keys()) == set(expected["metadata"].keys()) + for field in actual["metadata"].keys(): + assert actual["metadata"][field] == expected["metadata"][field] + + # Check parent fields + actual_parent_id = actual["parent"]["id"] + assert re.match(r"^[a-z0-9]{5}-[a-z0-9]{5}$", actual_parent_id) + assert actual["parent"]["access"] == expected["parent"]["access"] + assert actual["parent"]["communities"] == {} + assert actual["parent"]["pids"] == {} + assert actual["versions"] == expected["versions"] + + # Check status fields + assert not actual["is_published"] + assert actual["is_draft"] + assert actual["status"] == "draft" + # assert actual["revision_id"] == 4 # NOTE: Too difficult to test + + if self.metadata_in.get("pids", {}).get("doi"): + assert actual["pids"] == { + "doi": { + "client": "datacite", + "identifier": actual["pids"]["doi"]["identifier"], + "provider": "datacite", + }, + } + else: + assert actual["pids"] == {} + + assert actual.get("stats") == expected.get("stats") - def _as_via_api(self, metadata_in: dict) -> dict: - metadata_in["parent"]["access"].pop("grants") - metadata_in["parent"]["access"].pop("links") - metadata_in["versions"].pop("is_latest_draft") + return True + + def _as_via_api(self, metadata_in: dict, is_draft: bool = False) -> dict: + """Return the metadata as it appears in the REST API.""" + if not is_draft: + metadata_in["parent"]["access"].pop("grants") + metadata_in["parent"]["access"].pop("links") + metadata_in["versions"].pop("is_latest_draft") + else: + del metadata_in["stats"] return metadata_in def compare_published( self, actual: dict, - expected: dict = {}, + expected: dict | None = None, by_api: bool = False, - now: Arrow = arrow.utcnow(), + now: Arrow | None = None, ) -> bool: - """ - Compare the actual and expected metadata dictionaries. + """Compare the actual and expected metadata dictionaries. Does not check the following fields: - - id - parent.id - revision_id + - id + - parent.id + - revision_id Some fields are only compared to the present time: + - created + - updated - created - updated - - Args: + Parameters: actual (dict): The actual metadata dictionary. expected (dict): The expected metadata dictionary. + by_api (bool, optional): Whether to compare the metadata as it appears + in the REST API. Defaults to False. now (Arrow, optional): The current time. Defaults to arrow.utcnow(). - Raises: - AssertionError: If the actual metadata dictionary does not match - the expected metadata dictionary. Returns: bool: True if the actual metadata dictionary matches the expected metadata dictionary, False otherwise. + + Raises: + AssertionError: If the actual metadata dictionary does not match + the expected metadata dictionary. """ app = self.app expected = self.published.copy() if not expected else expected + now = now or arrow.utcnow() if by_api: - expected = self._as_via_api(expected) + expected = self._as_via_api(expected, is_draft=False) try: - assert now - arrow.get(actual["created"]) < datetime.timedelta(seconds=1) + assert now - arrow.get(actual["created"]) < timedelta(seconds=7) assert actual["custom_fields"] == expected["custom_fields"] assert "expires_at" not in actual.keys() assert actual["files"]["count"] == expected["files"]["count"] @@ -752,7 +908,7 @@ def compare_published( # assert actual["revision_id"] == 4 # NOTE: Too difficult to test assert actual["stats"] == expected["stats"] assert actual["status"] == "published" - assert now - arrow.get(actual["updated"]) < datetime.timedelta(seconds=1) + assert now - arrow.get(actual["updated"]) < timedelta(seconds=7) assert actual["versions"] == expected["versions"] return True except AssertionError as e: @@ -762,13 +918,19 @@ def compare_published( @pytest.fixture(scope="function") def record_metadata_with_files(running_app): + """Factory for creating a record metadata object with files.""" + def _factory( - metadata_in: dict = {}, + metadata_in: dict | None = None, app: Flask = current_app, - community_list: list[dict] = [], - file_entries: dict = {}, - owner_id: Optional[str] = "1", + community_list: list[dict] | None = None, + file_entries: dict | None = None, + owner_id: str | None = "1", ): + """Create a record metadata object with files.""" + metadata_in = metadata_in or {} + community_list = community_list or [] + file_entries = file_entries or {} return TestRecordMetadataWithFiles( metadata_in=metadata_in, app=running_app.app, @@ -781,8 +943,7 @@ def _factory( class TestRecordMetadataWithFiles(TestRecordMetadata): - """ - This class extends the TestRecordMetadata class for records with files + """Extends the TestRecordMetadata class for records with files. In addition to the usual instantiation arguments, the `file_entries` argument can be used to provide a dictionary of file entries shaped like the @@ -794,7 +955,8 @@ class TestRecordMetadataWithFiles(TestRecordMetadata): "file2": {"mimetype": "text/plain", "size": 200}, } - The `file_access_status` argument can be used to set the access status of the files. (Default: "open") + The `file_access_status` argument can be used to set the access status of + the files. (Default: "open") ``` """ @@ -802,12 +964,16 @@ def __init__( self, app: Flask = current_app, record_id: str = "XXXX", - metadata_in: dict = {}, - community_list: list[dict] = [], + metadata_in: dict | None = None, + community_list: list[dict] | None = None, file_access_status: str = "open", - file_entries: dict = {}, - owner_id: str = "1", + file_entries: dict | None = None, + owner_id: str | None = "1", ): + """Initialize the TestRecordMetadataWithFiles object.""" + metadata_in = metadata_in or {} + community_list = community_list or [] + file_entries = file_entries or {} super().__init__( app=app, community_list=community_list, @@ -821,13 +987,15 @@ def __init__( self.file_access_status = file_access_status @property - def metadata_in(self): + def metadata_in(self) -> dict: + """Return the input metadata for record creation with files.""" self._metadata_in["files"]["enabled"] = True self._metadata_in["files"]["entries"] = self.file_entries self._metadata_in.get("access", {})["status"] = self.file_access_status return self._metadata_in - def _add_file_entries(self, metadata): + def _add_file_entries(self, metadata: dict) -> dict: + """Add the file entries to the metadata.""" metadata["files"]["count"] = len(self.file_entries.keys()) metadata["files"]["total_bytes"] = sum( [e["size"] for k, e in self.file_entries.items()] @@ -858,67 +1026,22 @@ def _add_file_entries(self, metadata): return metadata @property - def draft(self): + def draft(self) -> dict: + """Return the draft metadata with files.""" draft = super().draft draft = self._add_file_entries(draft) return draft @property - def published(self): + def published(self) -> dict: + """Return the published metadata with files.""" published = super().published published = self._add_file_entries(published) return published @pytest.fixture(scope="function") -def minimal_record_metadata(running_app): - """Minimal record data as dict coming from the external world. - - Fields that can't be set before record creation: - - created - id - updated - pids - parent.pids - parent.id - - """ - app = running_app.app - metadata = TestRecordMetadata(app=app) - return { - "in": metadata.metadata_in, - "draft": metadata.draft, - "published": metadata.published, - } - - -@pytest.fixture(scope="function") -def minimal_record_metadata_with_files(running_app): - app = running_app.app - - def _factory( - record_id: str = "XXXX", entries: dict = {}, access_status: str = "open" - ): - - metadata = TestRecordMetadataWithFiles( - app=app, - record_id=record_id, - file_entries=entries, - file_access_status=access_status, - ) - - return { - "in": metadata.metadata_in, - "draft": metadata.draft, - "published": metadata.published, - } - - return _factory - - -@pytest.fixture(scope="function") -def full_record_metadata(users): +def full_sample_record_metadata(users): """Full record data as dict coming from the external world.""" return { "pids": { diff --git a/tests/fixtures/roles.py b/tests/fixtures/roles.py new file mode 100644 index 000000000..eeff32318 --- /dev/null +++ b/tests/fixtures/roles.py @@ -0,0 +1,27 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Roles related pytest fixtures for testing.""" + +import pytest +from invenio_accounts.proxies import current_accounts + + +@pytest.fixture(scope="module") +def admin_roles(): + """Fixture to create admin roles.""" + current_accounts.datastore.create_role(name="admin-moderator") + current_accounts.datastore.create_role(name="administration") + current_accounts.datastore.create_role(name="administration-moderation") diff --git a/site/tests/fixtures/saml.py b/tests/fixtures/saml.py similarity index 96% rename from site/tests/fixtures/saml.py rename to tests/fixtures/saml.py index f3a538759..ef8e099a3 100644 --- a/site/tests/fixtures/saml.py +++ b/tests/fixtures/saml.py @@ -1,4 +1,14 @@ +# Part of Knowledge Commons Works +# +# Copyright (C) 2025 MESH Research. +# +# Knowledge Commons Works is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""SAML related pytest fixtures for testing.""" + import datetime + from invenio_saml.handlers import acs_handler_factory test_config_saml = { @@ -54,7 +64,7 @@ "singleSignOnService": { # URL Target of the IdP where the Authentication # Request Message will be sent. - "url": ("https://proxy.hcommons-dev.org/Saml2/sso/redirect"), + "url": "https://proxy.hcommons-dev.org/Saml2/sso/redirect", # SAML protocol binding to be used when returning the # message. OneLogin Toolkit supports # the HTTP-Redirect binding @@ -106,7 +116,7 @@ "wantMessagesSigned": False, "wantNameId": True, "wantNameIdEncrypted": False, - "digestAlgorithm": ("http://www.w3.org/2001/04/xmlenc#sha256"), + "digestAlgorithm": "http://www.w3.org/2001/04/xmlenc#sha256", }, }, # Account Mapping @@ -115,7 +125,7 @@ # "name": "urn:oid:2.5.4.3", # "cn" "name": "urn:oid:2.5.4.42", # "givenName" "surname": "urn:oid:2.5.4.4", # "sn" - "external_id": ("urn:oid:2.16.840.1.113730.3.1.3"), # "employeeNumber" + "external_id": "urn:oid:2.16.840.1.113730.3.1.3", # "employeeNumber" }, # FIXME: new entity id url, assertion consumer service url, # certificate # "title", 'urn:oid:2.5.4.12': ['Hc Developer'], @@ -175,7 +185,7 @@ "external_method": "knowledgeCommons", "active": True, "confirmed_at": datetime.datetime( - 2025, 1, 14, 4, 28, 58, 725756, tzinfo=datetime.timezone.utc + 2025, 1, 14, 4, 28, 58, 725756, tzinfo=datetime.UTC ), }, }, @@ -216,7 +226,7 @@ "external_method": "knowledgeCommons", "active": True, "confirmed_at": datetime.datetime( - 2025, 1, 15, 15, 27, 0, 60172, tzinfo=datetime.timezone.utc + 2025, 1, 15, 15, 27, 0, 60172, tzinfo=datetime.UTC ), }, }, @@ -252,7 +262,7 @@ "external_method": "knowledgeCommons", "active": True, "confirmed_at": datetime.datetime( - 2025, 1, 15, 15, 24, 45, 598091, tzinfo=datetime.timezone.utc + 2025, 1, 15, 15, 24, 45, 598091, tzinfo=datetime.UTC ), }, }, @@ -305,7 +315,7 @@ "external_method": "knowledgeCommons", "active": True, "confirmed_at": datetime.datetime( - 2025, 1, 15, 15, 24, 45, 598091, tzinfo=datetime.timezone.utc + 2025, 1, 15, 15, 24, 45, 598091, tzinfo=datetime.UTC ), }, }, @@ -343,7 +353,7 @@ "external_method": "knowledgeCommons", "active": True, "confirmed_at": datetime.datetime( - 2025, 1, 15, 15, 40, 18, 235822, tzinfo=datetime.timezone.utc + 2025, 1, 15, 15, 40, 18, 235822, tzinfo=datetime.UTC ), }, }, diff --git a/site/tests/fixtures/search_provisioning.py b/tests/fixtures/search_provisioning.py similarity index 69% rename from site/tests/fixtures/search_provisioning.py rename to tests/fixtures/search_provisioning.py index 706373a79..32cd583ba 100644 --- a/site/tests/fixtures/search_provisioning.py +++ b/tests/fixtures/search_provisioning.py @@ -1,33 +1,42 @@ +# Part of Knowledge Commons Works +# +# Copyright (C) 2025 MESH Research. +# +# Knowledge Commons Works is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Search provisioning related pytest fixtures for testing.""" + import pytest from celery import shared_task -# from pprint import pformat -from typing import Optional - @shared_task(bind=True) def mock_send_remote_api_update( self, identity_id: str = "", - record: dict = {}, + record: dict | None = None, is_published: bool = False, is_draft: bool = False, is_deleted: bool = False, - parent: Optional[dict] = None, - latest_version_index: Optional[int] = None, - latest_version_id: Optional[str] = None, - current_version_index: Optional[int] = None, - draft: Optional[dict] = None, + parent: dict | None = None, + latest_version_index: int | None = None, + latest_version_id: str | None = None, + current_version_index: int | None = None, + draft: dict | None = None, endpoint: str = "", service_type: str = "", service_method: str = "", **kwargs, ): + """Mock the send_remote_api_update task.""" + record = record or {} pass @pytest.fixture def mock_send_remote_api_update_fixture(mocker): + """Mock the sending of remote API updates.""" mocker.patch( "invenio_remote_api_provisioner.components.send_remote_api_update", # noqa: E501 mock_send_remote_api_update, @@ -36,8 +45,15 @@ def mock_send_remote_api_update_fixture(mocker): @pytest.fixture def mock_search_api_request(requests_mock): + """Mock the sending of search API requests.""" - def mock_request(http_method, draft_id, metadata, api_url): + def mock_request( + http_method: str, + draft_id: str, + metadata: dict, + api_url: str, + ): + """Mock the sending of search API requests.""" mock_response = { "_internal_id": draft_id, "_id": "y-5ExZIBwjeO8JmmunDd", @@ -46,8 +62,10 @@ def mock_request(http_method, draft_id, metadata, api_url): "owner": {"url": "https://hcommons.org/profiles/myuser"}, "contributors": [ { - "name": f"{c['person_or_org'].get('family_name', '')}, " - f"{c['person_or_org'].get('given_name', '')}", + "name": ( + f"{c['person_or_org'].get('family_name', '')}, " + f"{c['person_or_org'].get('given_name', '')}" + ), "username": "user1", "url": "https://hcommons.org/profiles/user1", "role": "author", diff --git a/site/tests/fixtures/stats.py b/tests/fixtures/stats.py similarity index 83% rename from site/tests/fixtures/stats.py rename to tests/fixtures/stats.py index bafe3f712..42b1bf0d7 100644 --- a/site/tests/fixtures/stats.py +++ b/tests/fixtures/stats.py @@ -1,20 +1,33 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Fixtures for stats.""" + import pytest from flask import current_app from invenio_rdm_records.resources.stats.event_builders import ( build_record_unique_id, ) -from invenio_rdm_records.services.stats import ( - permissions_policy_lookup_factory, +from invenio_rdm_records.services.stats import permissions_policy_lookup_factory +from invenio_record_importer_kcworks.services.stats.aggregations import ( + StatAggregatorOverridable, ) from invenio_search.proxies import current_search, current_search_client from invenio_stats.contrib.event_builders import build_file_unique_id from invenio_stats.processors import EventsIndexer, anonymize_user, flag_robots from invenio_stats.queries import TermsQuery -from invenio_record_importer_kcworks.services.stats.aggregations import ( - StatAggregatorOverridable, -) - -# from invenio_stats.queries import TermsQuery AllowAllPermission = type( "Allow", @@ -24,6 +37,12 @@ def AllowAllPermissionFactory(obj_id, action): + """Factory for the allow all permission. + + Parameters: + obj_id: The object id. + action: The action. + """ return AllowAllPermission @@ -36,9 +55,7 @@ def AllowAllPermissionFactory(obj_id, action): test_config_stats["STATS_EVENTS"] = { "file-download": { - "templates": ( - "kcworks.services.search.index_templates.stats.file_download" - ), + "templates": "kcworks.services.search.index_templates.stats.file_download", # "templates": "invenio_rdm_records.records.stats.templates." # "events.file_download", "event_builders": [ @@ -55,9 +72,7 @@ def AllowAllPermissionFactory(obj_id, action): }, }, "record-view": { - "templates": ( - "kcworks.services.search.index_templates.stats.record_view" - ), + "templates": "kcworks.services.search.index_templates.stats.record_view", # "templates": "invenio_rdm_records.records.stats.templates." # "events.record_view", "event_builders": [ @@ -78,9 +93,7 @@ def AllowAllPermissionFactory(obj_id, action): test_config_stats["STATS_AGGREGATIONS"] = { "file-download-agg": { - "templates": ( - "kcworks.services.search.index_templates.stats.aggr_file_download" - ), + "templates": "kcworks.services.search.index_templates.stats.aggr_file_download", # "templates": "invenio_rdm_records.records.stats.templates." # "aggregations.aggr_file_download", "cls": StatAggregatorOverridable, @@ -107,9 +120,7 @@ def AllowAllPermissionFactory(obj_id, action): }, }, "record-view-agg": { - "templates": ( - "kcworks.services.search.index_templates.stats.aggr_record_view" - ), + "templates": "kcworks.services.search.index_templates.stats.aggr_record_view", # "templates": "invenio_rdm_records.records.stats.templates." # "aggregations.aggr_record_view", "cls": StatAggregatorOverridable, @@ -130,9 +141,7 @@ def AllowAllPermissionFactory(obj_id, action): {"precision_threshold": 1000}, ), }, - "query_modifiers": [ - lambda query, **_: query.filter("term", via_api=False) - ], + "query_modifiers": [lambda query, **_: query.filter("term", via_api=False)], }, }, } @@ -140,7 +149,11 @@ def AllowAllPermissionFactory(obj_id, action): @pytest.fixture(scope="function") def create_stats_indices(app): + """Create stats indices. + Parameters: + app: The application. + """ configs = { **test_config_stats["STATS_EVENTS"], **test_config_stats["STATS_AGGREGATIONS"], @@ -162,9 +175,7 @@ def create_stats_indices(app): ignore=None, ) except Exception as e: - current_app.logger.error( - "An error occured while creating stats indices." - ) + current_app.logger.error("An error occured while creating stats indices.") current_app.logger.error(e) print("An error occured while creating stats indices.") print(e) @@ -259,6 +270,4 @@ def create_stats_indices(app): {"can": lambda self: True, "allows": lambda *args: True}, )() -test_config_stats["STATS_PERMISSION_FACTORY"] = ( - permissions_policy_lookup_factory -) +test_config_stats["STATS_PERMISSION_FACTORY"] = permissions_policy_lookup_factory diff --git a/site/tests/fixtures/users.py b/tests/fixtures/users.py similarity index 88% rename from site/tests/fixtures/users.py rename to tests/fixtures/users.py index 97f6cd2de..89e3669d3 100644 --- a/site/tests/fixtures/users.py +++ b/tests/fixtures/users.py @@ -1,22 +1,40 @@ -from typing import Callable, Optional, Union -from flask import current_app +# Part of Knowledge Commons Works +# +# Copyright (C) 2025 MESH Research. +# +# Knowledge Commons Works is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""User related pytest fixtures for testing.""" + +import os +from collections.abc import Callable + +import pytest from flask_login import login_user from flask_principal import Identity from flask_security.utils import hash_password from invenio_access.models import ActionRoles, Role -from invenio_access.permissions import superuser_access +from invenio_access.permissions import any_user, authenticated_user, superuser_access +from invenio_access.utils import get_identity from invenio_accounts.models import User from invenio_accounts.proxies import current_accounts from invenio_accounts.testutils import login_user_via_session from invenio_administration.permissions import administration_access_action -from invenio_oauthclient.models import UserIdentity from invenio_oauth2server.models import Token -import os -import pytest +from invenio_oauthclient.models import UserIdentity from pytest_invenio.fixtures import UserFixtureBase from requests_mock.adapter import _Matcher as Matcher +def get_authenticated_identity(user: User) -> Identity: + """Return an authenticated identity for the given user.""" + identity = get_identity(user) + identity.provides.add(any_user) + identity.provides.add(authenticated_user) + return identity + + @pytest.fixture(scope="function") def mock_user_data_api(requests_mock) -> Callable: """Mock the user data api.""" @@ -38,10 +56,12 @@ def mock_api_call(saml_id: str, mock_remote_data: dict) -> Matcher: @pytest.fixture(scope="function") def user_data_to_remote_data(requests_mock): + """Factory fixture providing function to convert user data format.""" def convert_user_data_to_remote_data( saml_id: str, email: str, user_data: dict - ) -> dict[str, Union[str, list[dict[str, str]]]]: + ) -> dict[str, str | list[dict[str, str]]]: + """Convert user fixture data to format for remote data.""" mock_remote_data = { "username": saml_id, "email": email, @@ -63,9 +83,10 @@ class AugmentedUserFixture(UserFixtureBase): """Augmented UserFixtureBase class.""" def __init__(self, *args, **kwargs): + """Initialize the AugmentedUserFixture.""" super().__init__(*args, **kwargs) - self.mock_adapter: Optional[Matcher] = None - self.allowed_token: Optional[str] = None + self.mock_adapter: Matcher | None = None + self.allowed_token: str | None = None @pytest.fixture(scope="function") @@ -88,15 +109,15 @@ def make_user( password: str = "password", token: bool = False, admin: bool = False, - saml_src: Optional[str] = "knowledgeCommons", - saml_id: Optional[str] = "myuser", - orcid: Optional[str] = "", - kc_username: Optional[str] = "", - new_remote_data: dict = {}, + saml_src: str | None = "knowledgeCommons", + saml_id: str | None = "myuser", + orcid: str | None = "", + kc_username: str | None = "", + new_remote_data: dict | None = None, ) -> AugmentedUserFixture: - """Create a user. + """Create an augmented pytest-invenio user fixture. - Args: + Parameters: email: The email address of the user. password: The password of the user. token: Whether the user should have a token. @@ -112,6 +133,7 @@ def make_user( - identity: The identity of the user. - allowed_token: The API auth token of the user. """ + new_remote_data = new_remote_data or {} # Mock remote data that's already in the user fixture. mock_remote_data = user_data_to_remote_data( @@ -189,7 +211,6 @@ def admin_role_need(db): @pytest.fixture(scope="function") def admin(user_factory) -> AugmentedUserFixture: """Admin user for requests.""" - u: AugmentedUserFixture = user_factory( email="admin@inveniosoftware.org", password="password", @@ -233,7 +254,6 @@ def superuser_identity(admin: AugmentedUserFixture, superuser_role_need) -> Iden @pytest.fixture(scope="module") def user1_data() -> dict: """Data for user1.""" - return { "saml_id": "user1", "email": "user1@inveniosoftware.org", @@ -346,17 +366,18 @@ def client_with_login(requests_mock, app): """Log in a user to the client. Returns a factory function that returns a client with a logged in user. - - Args: - user: The user to log in. - new_remote_data: Optional. Data absent from the user's initial data - that should be added in the mocked remote API call at login. """ def log_in_user( client, user: User, ): + """Log in a user to the client. + + Parameters: + client: The client to log in with. + user: The user to log in. + """ login_user(user) login_user_via_session(client, email=user.email) return client diff --git a/site/tests/helpers/__init__.py b/tests/fixtures/vocabularies/__init__.py similarity index 100% rename from site/tests/helpers/__init__.py rename to tests/fixtures/vocabularies/__init__.py diff --git a/site/tests/fixtures/vocabularies/affiliations.py b/tests/fixtures/vocabularies/affiliations.py similarity index 70% rename from site/tests/fixtures/vocabularies/affiliations.py rename to tests/fixtures/vocabularies/affiliations.py index 87dd4b855..7828d8a29 100644 --- a/site/tests/fixtures/vocabularies/affiliations.py +++ b/tests/fixtures/vocabularies/affiliations.py @@ -1,3 +1,12 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023-2024, MESH Research +# +# Knowledge Commons Works is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. + +"""Vocabulary pytest fixtures for affiliations.""" + import pytest from invenio_access.permissions import system_identity from invenio_records_resources.proxies import current_service_registry @@ -6,7 +15,7 @@ @pytest.fixture(scope="module") def affiliations_v(app): - """Affiliation vocabulary record.""" + """Fixture to create the affiliation vocabulary records.""" affiliations_service = current_service_registry.get("affiliations") affiliations_service.create( system_identity, diff --git a/site/tests/fixtures/vocabularies/community_types.py b/tests/fixtures/vocabularies/community_types.py similarity index 74% rename from site/tests/fixtures/vocabularies/community_types.py rename to tests/fixtures/vocabularies/community_types.py index 665d45369..8258e54dd 100644 --- a/site/tests/fixtures/vocabularies/community_types.py +++ b/tests/fixtures/vocabularies/community_types.py @@ -1,20 +1,27 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023-2024, MESH Research +# +# Knowledge Commons Works is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. + +"""Vocabulary pytest fixtures for community types.""" + import pytest -from invenio_vocabularies.proxies import current_service as vocabulary_service from invenio_access.permissions import system_identity +from invenio_vocabularies.proxies import current_service as vocabulary_service from invenio_vocabularies.records.api import Vocabulary @pytest.fixture(scope="module") def community_type_type(app): - """Resource type vocabulary type.""" - return vocabulary_service.create_type( - system_identity, "communitytypes", "comtyp" - ) + """Fixture to create the community type vocabulary type.""" + return vocabulary_service.create_type(system_identity, "communitytypes", "comtyp") @pytest.fixture(scope="module") def community_type_v(app, community_type_type): - """Community type vocabulary record.""" + """Fixture to create the community type vocabulary records.""" vocabulary_service.create( system_identity, { diff --git a/site/tests/fixtures/vocabularies/date_types.py b/tests/fixtures/vocabularies/date_types.py similarity index 62% rename from site/tests/fixtures/vocabularies/date_types.py rename to tests/fixtures/vocabularies/date_types.py index 317453ab3..610c722fa 100644 --- a/site/tests/fixtures/vocabularies/date_types.py +++ b/tests/fixtures/vocabularies/date_types.py @@ -1,15 +1,21 @@ -import pytest +# Part of Knowledge Commons Works +# Copyright (C) 2023-2024, MESH Research +# +# Knowledge Commons Works is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. + +"""Vocabulary pytest fixtures for date types.""" +import pytest from invenio_access.permissions import system_identity -from invenio_vocabularies.proxies import ( - current_service as vocabulary_service, -) +from invenio_vocabularies.proxies import current_service as vocabulary_service from invenio_vocabularies.records.api import Vocabulary @pytest.fixture(scope="module") def date_type_type(app): - """Date vocabulary type.""" + """Fixture to create the date type vocabulary type.""" return vocabulary_service.create_type(system_identity, "datetypes", "dat") @@ -39,11 +45,8 @@ def date_type_type(app): @pytest.fixture(scope="module") def date_type_v(app, date_type_type): - """Date vocabulary record.""" + """Fixture to create the date type vocabulary records.""" for date_type in date_type_data: - vocabulary_service.create( - system_identity, - {**date_type, "type": "datetypes"}, - ) + vocabulary_service.create(system_identity, {**date_type, "type": "datetypes"}) Vocabulary.index.refresh() diff --git a/site/tests/fixtures/vocabularies/descriptions.py b/tests/fixtures/vocabularies/descriptions.py similarity index 62% rename from site/tests/fixtures/vocabularies/descriptions.py rename to tests/fixtures/vocabularies/descriptions.py index f5392b158..a097e026a 100644 --- a/site/tests/fixtures/vocabularies/descriptions.py +++ b/tests/fixtures/vocabularies/descriptions.py @@ -1,3 +1,12 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023-2024, MESH Research +# +# Knowledge Commons Works is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. + +"""Vocabulary pytest fixtures for descriptions.""" + import pytest from invenio_access.permissions import system_identity from invenio_vocabularies.proxies import current_service as vocabulary_service @@ -6,10 +15,8 @@ @pytest.fixture(scope="module") def description_type(app): - """title vocabulary type.""" - return vocabulary_service.create_type( - system_identity, "descriptiontypes", "dty" - ) + """Fixture to create the descriptiontype vocabulary type.""" + return vocabulary_service.create_type(system_identity, "descriptiontypes", "dty") DESCRIPTION_TYPES = [ @@ -36,8 +43,7 @@ def description_type_v(app, description_type): """Title Type vocabulary record.""" for description_type in DESCRIPTION_TYPES: vocabulary_service.create( - system_identity, - {**description_type, "type": "descriptiontypes"}, + system_identity, {**description_type, "type": "descriptiontypes"} ) Vocabulary.index.refresh() diff --git a/tests/fixtures/vocabularies/funding_and_awards.py b/tests/fixtures/vocabularies/funding_and_awards.py new file mode 100644 index 000000000..545f1c621 --- /dev/null +++ b/tests/fixtures/vocabularies/funding_and_awards.py @@ -0,0 +1,94 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023-2024, MESH Research +# +# Knowledge Commons Works is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. + +"""Vocabulary pytest fixtures for funding and awards.""" + +import pytest +from invenio_access.permissions import system_identity +from invenio_records_resources.proxies import current_service_registry +from invenio_vocabularies.contrib.awards.api import Award +from invenio_vocabularies.contrib.funders.api import Funder + + +@pytest.fixture(scope="module") +def funders_v(app): + """Fixture to create the funder vocabulary records.""" + funders_service = current_service_registry.get("funders") + funders = [ + "00k4n6c31", + "00k4n6c32", + "00k4n6c33", + "00k4n6c34", + "00k4n6c35", + "00k4n6c36", + ] + funder_items = [] + for funder in funders: + funder = funders_service.create( + system_identity, + { + "id": funder, + "identifiers": [ + { + "identifier": funder, + "scheme": "ofr", + }, + ], + "name": f"Funder {funder}", + "title": { + "en": f"Funder {funder}", + "fr": f"Fournisseur {funder}", + }, + "country": "BE", + }, + ) + funder_items.append(funder) + + if Funder: + Funder.index.refresh() + return funder_items + + +@pytest.fixture(scope="module") +def awards_v(app, funders_v): + """Funder vocabulary record.""" + awards_service = current_service_registry.get("awards") + awards = [ + "00k4n6c31::755021", + "00k4n6c32::755022", + "00k4n6c33::755023", + "00k4n6c34::755024", + "00k4n6c35::755025", + "00k4n6c36::755026", + ] + award_items = [] + for award in awards: + award = awards_service.create( + system_identity, + { + "id": award, + "identifiers": [ + { + "identifier": f"https://sandbox.kcworks.org/{award}", + "scheme": "url", + }, + ], + "number": award.split("::")[1], + "title": { + "en": f"Award {award.split('::')[1]}", + }, + "funder": {"id": award.split("::")[0]}, + "acronym": "HIT-CF", + "program": "H2020", + }, + ) + award_items.append(award) + + if Award: + Award.index.refresh() + + return award_items diff --git a/site/tests/fixtures/vocabularies/languages.py b/tests/fixtures/vocabularies/languages.py similarity index 70% rename from site/tests/fixtures/vocabularies/languages.py rename to tests/fixtures/vocabularies/languages.py index d5074e310..8acbeb67f 100644 --- a/site/tests/fixtures/vocabularies/languages.py +++ b/tests/fixtures/vocabularies/languages.py @@ -1,12 +1,21 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023-2024, MESH Research +# +# Knowledge Commons Works is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. + +"""Vocabulary pytest fixtures for languages.""" + import pytest -from invenio_vocabularies.proxies import current_service as vocabulary_service from invenio_access.permissions import system_identity +from invenio_vocabularies.proxies import current_service as vocabulary_service from invenio_vocabularies.records.api import Vocabulary @pytest.fixture(scope="module") def language_type(app): - """Language type vocabulary type.""" + """Fixture to create the language vocabulary type.""" return vocabulary_service.create_type(system_identity, "languages", "lng") @@ -36,7 +45,7 @@ def language_type(app): @pytest.fixture(scope="module") def language_v(app, language_type): - """Language vocabulary record.""" + """Fixture to create the language vocabulary records.""" for language in language_data: vocabulary_service.create( system_identity, diff --git a/site/tests/fixtures/vocabularies/licenses.py b/tests/fixtures/vocabularies/licenses.py similarity index 63% rename from site/tests/fixtures/vocabularies/licenses.py rename to tests/fixtures/vocabularies/licenses.py index 4f7c439ec..56e2b4c9f 100644 --- a/site/tests/fixtures/vocabularies/licenses.py +++ b/tests/fixtures/vocabularies/licenses.py @@ -1,5 +1,13 @@ -import pytest +# Part of Knowledge Commons Works +# Copyright (C) 2023-2024, MESH Research +# +# Knowledge Commons Works is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. + +"""Vocabulary pytest fixtures for licenses.""" +import pytest from invenio_access.permissions import system_identity from invenio_vocabularies.proxies import current_service as vocabulary_service from invenio_vocabularies.records.api import Vocabulary @@ -7,7 +15,7 @@ @pytest.fixture(scope="module") def licenses(app): - """Licenses vocabulary type.""" + """Fixture to create the licenses vocabulary type.""" return vocabulary_service.create_type(system_identity, "licenses", "lic") @@ -32,9 +40,11 @@ def licenses(app): }, "title": {"en": "Creative Commons Attribution 4.0 International"}, "description": { - "en": "The Creative Commons Attribution license allows" - " re-distribution and re-use of a licensed work on" - " the condition that the creator is appropriately credited." + "en": ( + "The Creative Commons Attribution license allows" + " re-distribution and re-use of a licensed work on" + " the condition that the creator is appropriately credited." + ) }, }, { @@ -44,11 +54,7 @@ def licenses(app): "scheme": "spdx", "osi_approved": "", }, - "title": { - "en": ( - "Creative Commons Attribution-NonCommercial 4.0 International" - ) - }, + "title": {"en": "Creative Commons Attribution-NonCommercial 4.0 International"}, "description": { "en": ( "The Creative Commons Attribution-NonCommercial license allows" @@ -60,22 +66,23 @@ def licenses(app): { "id": "cc-by-nc-nd-4.0", "props": { - "url": ( - "https://creativecommons.org/licenses/by-nc-nd/" - "4.0/legalcode" - ), + "url": "https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode", "scheme": "spdx", "osi_approved": "", }, "title": { - "en": "Creative Commons Attribution-NonCommercial-" - "NoDerivatives 4.0 International" + "en": ( + "Creative Commons Attribution-NonCommercial-" + "NoDerivatives 4.0 International" + ) }, "description": { - "en": "The Creative Commons Attribution-NonCommercial" - "-NoDerivatives license allows" - " re-distribution and re-use of a licensed work on" - " the condition that the creator is appropriately credited." + "en": ( + "The Creative Commons Attribution-NonCommercial" + "-NoDerivatives license allows" + " re-distribution and re-use of a licensed work on" + " the condition that the creator is appropriately credited." + ) }, }, ] @@ -83,7 +90,7 @@ def licenses(app): @pytest.fixture(scope="module") def licenses_v(app, licenses): - """Licenses vocabulary record.""" + """Fixture to create the licenses vocabulary records.""" for license_data in LICENSE_DATA: vocabulary_service.create( system_identity, diff --git a/site/tests/fixtures/vocabularies/resource_types.py b/tests/fixtures/vocabularies/resource_types.py similarity index 95% rename from site/tests/fixtures/vocabularies/resource_types.py rename to tests/fixtures/vocabularies/resource_types.py index 2e2119057..14fa5bbd9 100644 --- a/site/tests/fixtures/vocabularies/resource_types.py +++ b/tests/fixtures/vocabularies/resource_types.py @@ -1,10 +1,18 @@ +# Part of Knowledge Commons Works +# Copyright (C) 2023-2024, MESH Research +# +# Knowledge Commons Works is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. + +"""Vocabulary pytest fixtures for resource types.""" + import copy -import pytest +import pytest from invenio_access.permissions import system_identity -from invenio_pidstore.errors import PIDAlreadyExists -from invenio_vocabularies.records.api import Vocabulary from invenio_vocabularies.proxies import current_service as vocabulary_service +from invenio_vocabularies.records.api import Vocabulary @pytest.fixture(scope="module") @@ -253,12 +261,13 @@ def resource_type_type(app): @pytest.fixture(scope="module") def resource_types(): + """Fixture to create the resource type vocabulary.""" return copy.deepcopy(RESOURCE_TYPES) @pytest.fixture(scope="module") def resource_type_v(app, resource_type_type, resource_types): - """Resource type vocabulary record.""" + """Fixture to create the resource type vocabulary records.""" for resource_type in resource_types: vocabulary_service.create(system_identity, resource_type) diff --git a/site/tests/fixtures/vocabularies/roles.py b/tests/fixtures/vocabularies/roles.py similarity index 62% rename from site/tests/fixtures/vocabularies/roles.py rename to tests/fixtures/vocabularies/roles.py index a6d0a9230..b65419af4 100644 --- a/site/tests/fixtures/vocabularies/roles.py +++ b/tests/fixtures/vocabularies/roles.py @@ -1,8 +1,16 @@ -import pytest +# Part of Knowledge Commons Works +# Copyright (C) 2023-2024, MESH Research +# +# Knowledge Commons Works is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. + +"""Vocabulary pytest fixtures for roles.""" +import pytest +from invenio_access.permissions import system_identity from invenio_vocabularies.proxies import current_service as vocabulary_service from invenio_vocabularies.records.api import Vocabulary -from invenio_access.permissions import system_identity creatibutor_roles = [ { @@ -40,41 +48,31 @@ @pytest.fixture(scope="module") def creators_role_type(app): - """Creator role vocabulary type.""" - return vocabulary_service.create_type( - system_identity, "creatorsroles", "crr" - ) + """Fixture to create the creator role vocabulary type.""" + return vocabulary_service.create_type(system_identity, "creatorsroles", "crr") @pytest.fixture(scope="module") def creators_role_v(app, creators_role_type): - """Creator role vocabulary record.""" - + """Fixture to create the creator role vocabulary record.""" for role in creatibutor_roles: - vocabulary_service.create( - system_identity, - {**role, "type": "creatorsroles"}, - ) + vocabulary_service.create(system_identity, {**role, "type": "creatorsroles"}) Vocabulary.index.refresh() @pytest.fixture(scope="module") def contributors_role_type(app): - """Contributor role vocabulary type.""" - return vocabulary_service.create_type( - system_identity, "contributorsroles", "cor" - ) + """Fixture to create the contributor role vocabulary type.""" + return vocabulary_service.create_type(system_identity, "contributorsroles", "cor") @pytest.fixture(scope="module") def contributors_role_v(app, contributors_role_type): - """Contributor role vocabulary record.""" - + """Fixture to create the contributor role vocabulary records.""" for role in creatibutor_roles: vocabulary_service.create( - system_identity, - {**role, "type": "contributorsroles"}, + system_identity, {**role, "type": "contributorsroles"} ) Vocabulary.index.refresh() diff --git a/site/tests/fixtures/vocabularies/subjects.py b/tests/fixtures/vocabularies/subjects.py similarity index 88% rename from site/tests/fixtures/vocabularies/subjects.py rename to tests/fixtures/vocabularies/subjects.py index c96baf10a..5bb679a86 100644 --- a/site/tests/fixtures/vocabularies/subjects.py +++ b/tests/fixtures/vocabularies/subjects.py @@ -1,13 +1,30 @@ -import pytest +# Part of Knowledge Commons Works +# Copyright (C) 2024-2025 MESH Research +# +# KCWorks is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. +# +# KCWorks is an extended instance of InvenioRDM: +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2021-2024 TU Wien. +# Copyright (C) 2023-2024 Graz University of Technology. +# InvenioRDM is also free software; you can redistribute it and/or modify it +# under the terms of the MIT License. See the LICENSE file in the +# invenio-app-rdm package for more details. + +"""Fixtures for subjects vocabulary.""" +import pytest from invenio_access.permissions import system_identity from invenio_pidstore.errors import PIDDoesNotExistError -from invenio_vocabularies.contrib.subjects.api import Subject from invenio_records_resources.proxies import current_service_registry +from invenio_vocabularies.contrib.subjects.api import Subject @pytest.fixture(scope="module") def subjects_service(app): + """Pytest fixture providing the current subjects service.""" return current_service_registry.get("subjects") @@ -227,8 +244,7 @@ def subjects_service(app): @pytest.fixture(scope="module") def subject_v(app, subjects_service): - """Subject vocabulary record.""" - + """Fixture to create the subject vocabulary.""" for subject in subject_data: try: subjects_service.read(system_identity, id_=subject["id"]) @@ -237,4 +253,4 @@ def subject_v(app, subjects_service): system_identity, subject, ) - Subject.index.refresh() + Subject.index.refresh() # type: ignore diff --git a/docs/build/_static/scripts/furo-extensions.js b/tests/helpers/__init__.py similarity index 100% rename from docs/build/_static/scripts/furo-extensions.js rename to tests/helpers/__init__.py diff --git a/site/tests/helpers/fake_datacite_client.py b/tests/helpers/fake_datacite_client.py similarity index 100% rename from site/tests/helpers/fake_datacite_client.py rename to tests/helpers/fake_datacite_client.py diff --git a/site/tests/helpers/sample_files/sample.csv b/tests/helpers/sample_files/sample.csv similarity index 100% rename from site/tests/helpers/sample_files/sample.csv rename to tests/helpers/sample_files/sample.csv diff --git a/site/tests/helpers/sample_files/sample.jpg b/tests/helpers/sample_files/sample.jpg similarity index 100% rename from site/tests/helpers/sample_files/sample.jpg rename to tests/helpers/sample_files/sample.jpg diff --git a/site/tests/helpers/sample_files/sample.pdf b/tests/helpers/sample_files/sample.pdf similarity index 100% rename from site/tests/helpers/sample_files/sample.pdf rename to tests/helpers/sample_files/sample.pdf diff --git a/site/tests/helpers/sample_files/sample2.pdf b/tests/helpers/sample_files/sample2.pdf similarity index 100% rename from site/tests/helpers/sample_files/sample2.pdf rename to tests/helpers/sample_files/sample2.pdf diff --git a/site/tests/helpers/sample_records/__init__.py b/tests/helpers/sample_records/__init__.py similarity index 100% rename from site/tests/helpers/sample_records/__init__.py rename to tests/helpers/sample_records/__init__.py diff --git a/site/tests/helpers/sample_records/sample_metadata_book_pdf.py b/tests/helpers/sample_records/sample_metadata_book_pdf.py similarity index 97% rename from site/tests/helpers/sample_records/sample_metadata_book_pdf.py rename to tests/helpers/sample_records/sample_metadata_book_pdf.py index e458ef74e..8a4ad0d88 100644 --- a/site/tests/helpers/sample_records/sample_metadata_book_pdf.py +++ b/tests/helpers/sample_records/sample_metadata_book_pdf.py @@ -18,7 +18,7 @@ }, { "group_identifier": "1003089", - "group_name": ("Foreign Language Teaching and the Environment"), + "group_name": "Foreign Language Teaching and the Environment", }, { "group_identifier": "1003408", @@ -205,18 +205,10 @@ ), "rights": [ { - "description": { - "en": ( - "Proprietary material. No permissions are " - "granted for any kind of copyring or " - "re-use. All rights reserved" - ) - }, + "description": {"en": "All Rights Reserved"}, "id": "arr", "icon": "copyright", - "props": { - "url": ("https://en.wikipedia.org/wiki/All_rights_reserved") - }, + "props": {"url": "https://arr.org/licenses/all-rights-reserved"}, "title": {"en": "All Rights Reserved"}, } ], @@ -267,7 +259,7 @@ }, { "group_identifier": "1003089", - "group_name": ("Foreign Language Teaching and the Environment"), + "group_name": "Foreign Language Teaching and the Environment", }, { "group_identifier": "1003408", @@ -466,7 +458,7 @@ }, { "group_identifier": "1003089", - "group_name": ("Foreign Language Teaching and the Environment"), + "group_name": "Foreign Language Teaching and the Environment", }, { "group_identifier": "1003408", diff --git a/site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py b/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py similarity index 100% rename from site/tests/helpers/sample_records/sample_metadata_chapter2_pdf.py rename to tests/helpers/sample_records/sample_metadata_chapter2_pdf.py diff --git a/site/tests/helpers/sample_records/sample_metadata_chapter3_pdf.py b/tests/helpers/sample_records/sample_metadata_chapter3_pdf.py similarity index 100% rename from site/tests/helpers/sample_records/sample_metadata_chapter3_pdf.py rename to tests/helpers/sample_records/sample_metadata_chapter3_pdf.py diff --git a/site/tests/helpers/sample_records/sample_metadata_chapter4_pdf.py b/tests/helpers/sample_records/sample_metadata_chapter4_pdf.py similarity index 100% rename from site/tests/helpers/sample_records/sample_metadata_chapter4_pdf.py rename to tests/helpers/sample_records/sample_metadata_chapter4_pdf.py diff --git a/site/tests/helpers/sample_records/sample_metadata_chapter5_pdf.py b/tests/helpers/sample_records/sample_metadata_chapter5_pdf.py similarity index 100% rename from site/tests/helpers/sample_records/sample_metadata_chapter5_pdf.py rename to tests/helpers/sample_records/sample_metadata_chapter5_pdf.py diff --git a/site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py b/tests/helpers/sample_records/sample_metadata_chapter_pdf.py similarity index 100% rename from site/tests/helpers/sample_records/sample_metadata_chapter_pdf.py rename to tests/helpers/sample_records/sample_metadata_chapter_pdf.py diff --git a/site/tests/helpers/sample_records/sample_metadata_conference_proceedings_pdf.py b/tests/helpers/sample_records/sample_metadata_conference_proceedings_pdf.py similarity index 100% rename from site/tests/helpers/sample_records/sample_metadata_conference_proceedings_pdf.py rename to tests/helpers/sample_records/sample_metadata_conference_proceedings_pdf.py diff --git a/site/tests/helpers/sample_records/sample_metadata_interview_transcript_pdf.py b/tests/helpers/sample_records/sample_metadata_interview_transcript_pdf.py similarity index 100% rename from site/tests/helpers/sample_records/sample_metadata_interview_transcript_pdf.py rename to tests/helpers/sample_records/sample_metadata_interview_transcript_pdf.py diff --git a/site/tests/helpers/sample_records/sample_metadata_journal_article2_pdf.py b/tests/helpers/sample_records/sample_metadata_journal_article2_pdf.py similarity index 100% rename from site/tests/helpers/sample_records/sample_metadata_journal_article2_pdf.py rename to tests/helpers/sample_records/sample_metadata_journal_article2_pdf.py diff --git a/site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py b/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py similarity index 100% rename from site/tests/helpers/sample_records/sample_metadata_journal_article_pdf.py rename to tests/helpers/sample_records/sample_metadata_journal_article_pdf.py diff --git a/site/tests/helpers/sample_records/sample_metadata_presentation_pdf.py b/tests/helpers/sample_records/sample_metadata_presentation_pdf.py similarity index 100% rename from site/tests/helpers/sample_records/sample_metadata_presentation_pdf.py rename to tests/helpers/sample_records/sample_metadata_presentation_pdf.py diff --git a/site/tests/helpers/sample_records/sample_metadata_thesis_pdf.py b/tests/helpers/sample_records/sample_metadata_thesis_pdf.py similarity index 100% rename from site/tests/helpers/sample_records/sample_metadata_thesis_pdf.py rename to tests/helpers/sample_records/sample_metadata_thesis_pdf.py diff --git a/site/tests/helpers/sample_records/sample_metadata_white_paper_pdf.py b/tests/helpers/sample_records/sample_metadata_white_paper_pdf.py similarity index 100% rename from site/tests/helpers/sample_records/sample_metadata_white_paper_pdf.py rename to tests/helpers/sample_records/sample_metadata_white_paper_pdf.py diff --git a/site/tests/helpers/util.ipynb b/tests/helpers/util.ipynb similarity index 100% rename from site/tests/helpers/util.ipynb rename to tests/helpers/util.ipynb diff --git a/tests/helpers/utils.py b/tests/helpers/utils.py new file mode 100644 index 000000000..a6b799203 --- /dev/null +++ b/tests/helpers/utils.py @@ -0,0 +1,30 @@ +"""Utility functions for tests.""" + +from invenio_records.dictutils import parse_lookup_key + + +def remove_value_by_path(d: dict, path: str) -> dict: + """Remove a value from a nested dictionary based on a dot-separated path string. + + Usage example: + >>> d = {"a": {"b": {"c": 1}}} + >>> remove_value_by_path(d, "a.b.c") + {'a': {'b': {}}} + + :param d: The dictionary to modify + :param path: The dot-separated path string to the value + :return: The modified dictionary + """ + keys = parse_lookup_key(path) + if not keys: + return d + + if len(keys) == 1: + d.pop(keys[0], None) + return d + + if keys[0] not in d: + return d + + d[keys[0]] = remove_value_by_path(d[keys[0]], ".".join(keys[1:])) + return d diff --git a/tests/js/formik_test_utils.js b/tests/js/formik_test_utils.js new file mode 100644 index 000000000..cf2d6e644 --- /dev/null +++ b/tests/js/formik_test_utils.js @@ -0,0 +1,93 @@ +import React from 'react'; +import { render } from '@testing-library/react'; +import { Formik } from 'formik'; + +// Mock useFormikContext +export const mockSetFieldTouched = jest.fn(); +export const mockSetFieldError = jest.fn(); +export const mockSetFieldValue = jest.fn(); +export const mockSetErrors = jest.fn(); +export const mockSetTouched = jest.fn(); +export const mockSetValues = jest.fn(); +export const mockSetStatus = jest.fn(); +export const mockSetSubmitting = jest.fn(); +export const mockSetFormikState = jest.fn(); +export const mockResetForm = jest.fn(); +export const mockSubmitForm = jest.fn(); +export const mockValidateForm = jest.fn(); +export const mockValidateField = jest.fn(); + +export const mockFormikContext = { + setFieldTouched: mockSetFieldTouched, + setFieldError: mockSetFieldError, + setFieldValue: mockSetFieldValue, + setErrors: mockSetErrors, + setTouched: mockSetTouched, + setValues: mockSetValues, + setStatus: mockSetStatus, + setSubmitting: mockSetSubmitting, + setFormikState: mockSetFormikState, + resetForm: mockResetForm, + submitForm: mockSubmitForm, + validateForm: mockValidateForm, + validateField: mockValidateField, + values: {}, + errors: {}, + touched: {}, + isSubmitting: false, + isValidating: false, + dirty: false, + isValid: false, + initialValues: {}, + initialErrors: {}, + initialTouched: {}, + initialStatus: undefined, +}; + +// Helper function to render components with Formik context +export function renderWithFormik( + ui, + { + initialValues = {}, + initialErrors = {}, + initialTouched = {}, + ...renderOptions + } = {} +) { + return render( + {}} + > + {ui} + , + renderOptions + ); +} + +/** + * Sets up basic form mocks with default values and mock functions. + * Can be used for testing any form-related functionality. + * + * @param {Object} values - Optional values to override defaults + * @returns {Object} Object containing form values and mock functions + */ +export function setupFormMocks(values = {}) { + const defaultValues = { + metadata: { + identifiers: [], + publisher: '', + }, + files: { + enabled: false, + }, + ...values, + }; + + return { + values: defaultValues, + setFieldValue: mockSetFieldValue, + }; +} \ No newline at end of file diff --git a/tests/js/redux_store.js b/tests/js/redux_store.js new file mode 100644 index 000000000..63048d5e9 --- /dev/null +++ b/tests/js/redux_store.js @@ -0,0 +1,40 @@ +import { combineReducers, configureStore } from '@reduxjs/toolkit'; +// import configureStore from '@js/invenio_rdm_records/src/deposit/store'; +import rootReducer from "@js/invenio_rdm_records/src/deposit/state/reducers"; +// included reducers in the rootReducer: +// import { computeDepositState } from "@js/invenio_rdm_records/src/deposit/store/state/reducers/deposit"; +// import { UploadState } from "@js/invenio_rdm_records/src/deposit/store/state/reducers/files"; + +export const sampleState = { + deposit: { + config: { + custom_fields: { + error_labels: {}, + }, + }, + record: {}, + editorState: {}, + files: [], + permissions: {}, + actionState: null, + actionStateExtra: {}, + }, + files: {}, +}; + +export const setupStore = preloadedState => { + return configureStore({ + reducer: rootReducer, + preloadedState + }) +} + +// const sampleStore = setupStore( +// record, preselectedCommunity, files, config, permissions, +// ); + +// sampleStore.dispatch(setRecord(record)); +// sampleStore.dispatch(setPreselectedCommunity(preselectedCommunity)); +// sampleStore.dispatch(setFiles(files)); +// sampleStore.dispatch(setConfig(config)); +// sampleStore.dispatch(setPermissions(permissions)); \ No newline at end of file diff --git a/tests/js/redux_test_utils.js b/tests/js/redux_test_utils.js new file mode 100644 index 000000000..3faf9dce1 --- /dev/null +++ b/tests/js/redux_test_utils.js @@ -0,0 +1,30 @@ +import React from 'react' +import { render } from '@testing-library/react' +import { Provider } from 'react-redux' + +import { configureStore } from '@js/invenio_rdm_records/src/deposit/store' +import { setupStore } from './redux_store' +import { + RDMDepositRecordSerializer, +} from "@js/invenio_rdm_records/src/deposit/api/DepositRecordSerializer"; +import { + RDMDepositApiClient, + RDMDepositFileApiClient, +} from "@js/invenio_rdm_records/src/deposit/api/DepositApiClient"; + +function renderWithProviders( + ui, + { + preloadedState = {}, + // Automatically create a store instance if no store was passed in + store = setupStore(preloadedState), + ...renderOptions + } = {} +) { + function Wrapper({ children }) { + return {children} + } + return { store, ...render(ui, { wrapper: Wrapper, ...renderOptions }) } +} + +export { renderWithProviders } diff --git a/tests/ui/conftest.py b/tests/ui/conftest.py new file mode 100644 index 000000000..10602fd29 --- /dev/null +++ b/tests/ui/conftest.py @@ -0,0 +1,16 @@ +"""Test configuration for UI tests. + +```python +from invenio_app.factory import create_ui +import pytest + +@pytest.fixture(scope='module') +def app_config(app_config): + return app_config + +@pytest.fixture(scope='module') +def create_app(): + return create_ui +``` + +""" diff --git a/site/tests/ui/test_factory.py b/tests/ui/test_factory.py similarity index 88% rename from site/tests/ui/test_factory.py rename to tests/ui/test_factory.py index e14e3eb6f..3cc7f4cf0 100644 --- a/site/tests/ui/test_factory.py +++ b/tests/ui/test_factory.py @@ -1,15 +1,20 @@ -from pprint import pprint -import pytest +# Part of Knowledge Commons Works +# Copyright (C) 2023-2024, MESH Research +# +# Knowledge Commons Works is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. +"""UI tests for Knowledge Commons Works.""" -def test_sample(running_app): - assert True +from pprint import pprint + +import pytest @pytest.mark.skip(reason="Not implemented") def test_frontpage(running_app, client): - # pprint(dir(base_client)) - # pprint(dir(base_app)) + """Test the frontpage view.""" response = client.get("/") pprint(response.response) assert response.status_code == 200 diff --git a/translations/en/LC_MESSAGES/messages.po b/translations/en/LC_MESSAGES/messages.po index 42cde334a..1e5620aaa 100644 --- a/translations/en/LC_MESSAGES/messages.po +++ b/translations/en/LC_MESSAGES/messages.po @@ -1,14 +1,14 @@ # English translations for PROJECT. -# Copyright (C) 2023 MESH Research +# Copyright (C) 2025 MESH Research # This file is distributed under the same license as the PROJECT project. -# FIRST AUTHOR , 2023. +# FIRST AUTHOR , 2025. # msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: scottia4@msu.edu\n" -"POT-Creation-Date: 2023-07-11 13:28-0400\n" -"PO-Revision-Date: 2023-07-12 09:33-0400\n" +"POT-Creation-Date: 2025-04-30 16:52-0400\n" +"PO-Revision-Date: 2025-04-24 10:38-0400\n" "Last-Translator: FULL NAME \n" "Language: en\n" "Language-Team: en \n" @@ -16,265 +16,3664 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" +"Generated-By: Babel 2.17.0\n" -#: /Users/ianscott/Development/kcworks/invenio.cfg:129 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:201 +msgid "KCR thesis information" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:209 +msgid "KCR journal information" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:218 msgid "KCR Book information" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:138 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:224 msgid "KCR Conference information" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:144 -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:152 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:152 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:228 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:242 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:257 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:240 msgid "Content warning" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:347 -#: /Users/ianscott/Development/kcworks/invenio.cfg:354 -#: /Users/ianscott/Development/kcworks/invenio.cfg:391 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:279 +msgid "Discover" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:284 +msgid "Publish" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:289 +msgid "Collect" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:294 +msgid "Collaborate" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:556 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:56 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:144 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:186 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:90 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:121 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:56 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:144 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:186 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:90 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:121 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:213 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:213 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/records/config.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/records/config.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/affiliations/config.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/config.py:45 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/names/config.py:45 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/subjects/config.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/service.py:82 +msgid "Best match" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:560 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:152 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:194 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:98 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:129 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:152 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:194 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:98 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:129 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:217 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:217 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/records/config.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/records/config.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/affiliations/config.py:46 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/config.py:53 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/names/config.py:53 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/subjects/config.py:46 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/service.py:90 +msgid "Newest" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:564 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:156 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:198 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:102 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:133 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:156 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:198 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:102 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:133 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:221 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:221 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/records/config.py:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/records/config.py:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/affiliations/config.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/config.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/names/config.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/subjects/config.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/service.py:94 +msgid "Oldest" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:568 +msgid "Most recently published" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:572 +msgid "Earliest published" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:576 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:225 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:225 +msgid "Version" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:580 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:229 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:229 +msgid "Recently updated" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:584 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:233 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:233 +msgid "Least recently updated" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:588 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:237 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:237 +msgid "Most viewed" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:591 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:240 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:240 +msgid "Most downloaded" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:641 +msgid "Help & FAQ" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:643 +msgid "Terms of use" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:647 +msgid "Privacy policy" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:651 +msgid "Guidelines for use" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:654 +msgid "Mesh Research" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:661 +msgid "Knowledge Commons" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:663 +msgid "LinkedIn" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:668 +msgid "hcommons.social" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:673 +msgid "Newsletter" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:681 +msgid "Supporters" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:690 +msgid "Michigan State University" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:692 +msgid "National Science Foundation" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:697 +msgid "National Endowment for the Humanities" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:708 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:17 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:17 +msgid "Manage" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:710 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:132 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:136 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:303 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:307 +msgid "Download" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:715 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:15 +msgid "Collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:720 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:50 +msgid "Content Warning" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:724 +msgid "AI Use" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:728 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:44 +msgid "Versions" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:733 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:55 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:55 +msgid "Keywords & Subjects" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:738 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:61 +msgid "Cite this" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:743 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:811 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:170 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:170 +msgid "Details" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:764 +msgid "Licenses" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:769 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:93 +msgid "Export" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:774 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:99 +msgid "Share" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:784 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:112 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:112 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/imprint.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/journal.html:3 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:4 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/imprint.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/journal.html:3 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:4 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/service.py:86 +msgid "Title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:788 +msgid "Creators and Contributors" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:796 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:134 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:134 +msgid "Content" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:800 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:138 +msgid "Descriptions" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:804 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:148 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:148 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_docx_viewer/base.html:20 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/base.html:12 +msgid "Preview" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:815 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:826 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:174 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:199 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:174 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:199 +msgid "Publication" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:819 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:926 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:117 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:192 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:271 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:117 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:192 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:271 +msgid "Contributors" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:855 +msgid "Technical specifications" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:863 +msgid "Project details" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:871 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:215 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:215 +msgid "Additional titles" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:877 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:221 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:221 +msgid "Funding" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:881 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:225 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:225 +msgid "Identifiers" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:888 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:232 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:232 +msgid "Related" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:894 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:238 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:238 +msgid "References" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:900 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:244 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:244 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_ai_field.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_ai_field.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_ai_field.py:59 +msgid "AI Usage" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:912 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:939 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:256 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:294 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:256 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:294 +msgid "Analytics" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:951 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:313 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:313 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:108 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:108 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/custom_fields/subject.py:49 +msgid "Subjects" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:962 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:326 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:326 +msgid "Files" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1037 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1044 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1060 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1169 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:75 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:336 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:343 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:366 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/tests/conftest.py:268 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/tests/conftest.py:275 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:75 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:336 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:343 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:366 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/tests/conftest.py:268 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/tests/conftest.py:275 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:66 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:79 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:119 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:189 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-api-provisioner/tests/conftest.py:296 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-api-provisioner/tests/conftest.py:305 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:123 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:213 msgid "DOI" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:359 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1049 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:348 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/tests/conftest.py:280 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:348 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/tests/conftest.py:280 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:71 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-api-provisioner/tests/conftest.py:310 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:97 msgid "OAI ID" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:365 -msgid "hclegacy-pid" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1068 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:374 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:374 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:39 +msgid "OAI" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1080 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:394 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:404 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/tests/conftest.py:289 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:394 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:404 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/tests/conftest.py:289 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:50 +msgid "Concept DOI" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1092 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:109 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:113 +msgid "Humanities Commons Legacy PID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1097 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:114 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:118 +msgid "Humanities Commons Legacy Record ID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1102 +msgid "DOI (DataCite)" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:370 -msgid "hclegacy-record-id" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1107 +msgid "Alternate DOI" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:375 -msgid "datacite-doi" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1112 +msgid "Import record ID" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:382 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1117 +msgid "NEH record ID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1127 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:162 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:176 msgid "hcid" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:383 -msgid "hc_username" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1132 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:167 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:181 +msgid "kcid" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:398 -msgid "OAI" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1137 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1142 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:172 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:177 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:186 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:191 +msgid "KC member" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:5 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:5 -msgid "Book / Report / Chapter" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1147 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:196 +msgid "NEH user ID" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:12 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:12 -msgid "Book title" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1152 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:201 +msgid "Import user ID" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:14 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:14 -msgid "Title of the book or report which this upload is part of." +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1160 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:78 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:78 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:183 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:207 +msgid "GRID" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:24 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:24 -msgid "Place" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1161 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:58 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:58 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:184 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:101 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:208 +msgid "GND" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:25 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:25 -msgid "e.g. city, country" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1162 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:86 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:86 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:139 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:185 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:100 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:143 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:209 +msgid "ISNI" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:26 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:26 -msgid "Place where the imprint was published" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1163 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:186 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:210 +msgid "ROR" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:34 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:34 -msgid "ISBN" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1170 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:191 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:215 +msgid "Open Funder Registry" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:35 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:35 -msgid "e.g. 0-06-251587-X" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1198 +msgid "Welcome to KCWorks!" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:36 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:36 -msgid "International Standard Book Number" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1710 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:86 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:86 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:108 +msgid "Reader" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:44 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:44 -msgid "Pages" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1711 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:87 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:87 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:109 +msgid "Can view restricted records." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_ai_field.py:62 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_ai_field.py:62 -msgid "AI Usage" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1716 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:114 +msgid "Curator" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_ai_field.py:64 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_ai_field.py:64 -#: /Users/ianscott/Development/kcworks/templates/ai_usage.html:2 -msgid "AI Used" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1717 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:115 +msgid "Can curate records and view restricted records." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_ai_field.py:66 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_ai_field.py:66 -msgid "Did generative AI contribute to the production of this work?" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1723 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:121 +msgid "Manager" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_ai_field.py:69 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_ai_field.py:69 -msgid "Description of use" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1725 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:101 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:101 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:123 +msgid "Can manage members, curate records and view restricted records." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_ai_field.py:70 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_ai_field.py:70 -msgid "Describe how artificial intelligence or machine learning were used." +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1734 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:110 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:110 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:142 +msgid "Owner" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:78 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:78 -msgid "Chapter" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1735 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:111 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:111 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:143 +msgid "Full administrative access to the entire community." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:89 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:89 -msgid "Edition" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1871 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:3880 +msgid "Add Contributor" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:100 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:100 -msgid "Commons domain" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1872 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:3881 +msgid "Edit Contributor" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:131 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:131 -msgid "Meeting organization" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:5178 +msgid "e.g., 32 x 24 cm or 1.5 GB (press 'enter' to add)" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:142 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:142 -msgid "Sponsoring institution" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:5193 +msgid "Copy/paste your existing DOI here..." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:160 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:160 -msgid "Commons admin info" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:5194 +msgid "Discard the reserved DOI." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:59 -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:65 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:59 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:65 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/notes.html:11 -msgid "Notes" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:5195 +msgid "Get a DOI now!" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:67 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:67 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/notes.html:7 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/notes.html:14 -msgid "Description" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:5197 +msgid "" +"Reserve a DOI by pressing the button (so it can be included in files " +"prior to upload). The DOI is registered when your upload is published." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:69 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:69 -msgid "A few words describing the kind of notes recorded here." +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:5202 +msgid "" +"Only enter a DOI if you have already registered one with a DOI provider. " +"If you have not registered one we will register a DOI for you when your " +"upload is published." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:75 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:75 -msgid "Note" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:148 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:190 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:125 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:148 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:190 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:125 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/config.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/config.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/affiliations/config.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/config.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/names/config.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/subjects/config.py:42 +msgid "Name" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:76 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:76 -msgid "Type your note content here" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/errors.py:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/errors.py:27 +#, python-brace-format +msgid "A featured community entry with {q} does not exist." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:77 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:77 -msgid "The text of your note" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/errors.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/errors.py:41 +#, python-brace-format +msgid "Logo size limit exceeded. Limit: {limit} bytes Given: {file_size} bytes" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_series_field.py:61 -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_series_field.py:68 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_series_field.py:61 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_series_field.py:68 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/series_field.html:1 -msgid "Series" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/errors.py:55 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/errors.py:55 +#, python-format +msgid "" +"There is %(num)s request open for this community. Please, resolve it " +"before deleting this community." +msgid_plural "" +"There are %(num)s requests open for this community. Please, resolve all " +"of them before deleting this community." +msgstr[0] "" +msgstr[1] "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/errors.py:87 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/errors.py:87 +msgid "" +"Cannot set community as the default. The record has not been added to the" +" community." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_series_field.py:70 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_series_field.py:70 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/series_field.html:4 -msgid "Series Title" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:133 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:13 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:25 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/search.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:133 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:13 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:25 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/search.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:38 +msgid "Communities" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_series_field.py:75 -msgid "Series Number" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/new.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/search.html:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/new.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/search.html:27 +msgid "New community" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_user_tags_fields.py:71 -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_user_tags_fields.py:78 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_user_tags_fields.py:71 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_user_tags_fields.py:78 -msgid "Tags" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:147 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:147 +msgid "Requests" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_user_tags_fields.py:79 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_user_tags_fields.py:79 -msgid "Enter your tags here" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:154 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/members/base.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:154 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/members/base.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/members/base.html:22 +msgid "Members" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_volumes_fields.py:59 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_volumes_fields.py:59 -msgid "Volumes" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:162 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:162 +msgid "Settings" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_volumes_fields.py:61 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_volumes_fields.py:61 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/volumes.html:2 -msgid "Total volumes" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:170 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:170 +msgid "Curation policy" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_volumes_fields.py:67 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_volumes_fields.py:67 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/volumes.html:7 -msgid "Volume" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:178 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:178 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/about/index.html:24 +msgid "About" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_series_field.py:75 -msgid "Volume Identifier" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/schema.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/schema.py:51 +#, python-brace-format +msgid "Field cannot be blank or longer than {max_} characters." msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/notes.html:2 -msgid "Note text" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/schema.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/schema.py:61 +#, python-brace-format +msgid "Field cannot be longer than {max} characters." msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/custom_deposit.html:9 -msgid "New version" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/schema.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/schema.py:72 +msgid "The ID must not be an Universally Unique IDentifier (UUID)." msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/custom_deposit.html:11 -msgid "New upload" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/schema.py:220 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/schema.py:220 +msgid "The ID should contain only letters with numbers or dashes." msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/custom_deposit.html:13 -msgid "Edit upload" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/schema.py:323 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/schema.py:323 +msgid "Deleted community" msgstr "" -#: /Users/ianscott/Development/kcworks/templates/ai_usage.html:7 -msgid "Usage Description" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/schema.py:324 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/schema.py:324 +msgid "The community was deleted." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/resources/config.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/resources/config.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/resources/config.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/resources/config.py:54 +msgid "The record has been deleted." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/resources/ui_schema.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/resources/ui_schema.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/schema.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/github/release.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/schema.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/github/release.py:60 +msgid "Unknown" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/resources/ui_schema.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/resources/ui_schema.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/schema.py:111 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/schema.py:111 +msgid "System (automatic)" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/resources/ui_schema.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/resources/ui_schema.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/schema.py:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/schema.py:113 +msgid "Admin" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/components.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/components.py:38 +msgid "A community with this identifier already exists." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/components.py:56 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/components.py:56 +msgid "The ID should be modified through the renaming URL instead." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/components.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/components.py:64 +msgid "A new ID value is required for the renaming." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/components.py:141 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/components.py:141 +msgid "The community is not public." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/config.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/config.py:54 +msgid "Featured" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:16 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:16 +msgid "Type" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:18 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:18 +msgid "Organization" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:19 +msgid "Event" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:20 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:20 +msgid "Topic" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:276 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:293 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:276 +msgid "Project" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/settings/base.html:25 +msgid "Visibility" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:37 +msgid "Public" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:9 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:9 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:34 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:22 +msgid "Restricted" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:37 +msgid "Hidden" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:18 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:18 +msgid "Role" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:24 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:24 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:42 +msgid "Status" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:26 +msgid "Submitted" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:27 +msgid "Expired" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:28 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:28 +msgid "Accepted" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:29 +msgid "Declined" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:30 +msgid "Cancelled" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:32 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:32 +msgid "Open" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:43 +msgid "Closed" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/fields.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/fields.py:21 +msgid "Invalid role." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/request.py:103 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/request.py:103 +msgid "Community invitation" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/schemas.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/schemas.py:89 +msgid "Missing fields 'role' and/or 'visible'." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/schemas.py:117 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/schemas.py:117 +msgid "Untitled" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:197 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:197 +msgid "Must be false" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:219 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:219 +msgid "Invalid member type: email" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:278 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:278 +#, python-brace-format +msgid "Invitation to join \"{community}\"" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:281 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:281 +#, python-brace-format +msgid "You will join as \"{role}\"." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:538 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:660 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:538 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:660 +msgid "A community must have at least one owner." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:567 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:567 +msgid "You cannot change your own role." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:575 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:575 +msgid "You can only set public visibility on your own membership." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:584 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:584 +#, python-brace-format +msgid "You will join as \"{role}\" (changed from: \"{previous}\")." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/requests/user_moderation/actions.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/requests/user_moderation/actions.py:72 +msgid "User was blocked" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:31 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:31 +msgid "" +"Organize, curate and collaborate on records for your institution, " +"project, topic or event." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/search.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/search.html:12 +msgid "Search communities" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:49 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_frontpage.html:47 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_frontpage.html:48 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/records/search.html:13 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:40 +msgid "Search" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:71 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:71 +msgid "My communities" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:83 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:83 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:65 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:74 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:82 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:90 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:99 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:108 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:116 +msgid "See all" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:81 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:81 +msgid "New communities" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:10 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:10 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:17 +msgid "Tombstone" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:20 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:20 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:27 +msgid "Gone" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:25 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:25 +#, python-format +msgid "" +"\n" +" The community you are trying to access was removed from " +"%(sitename)s. The\n" +" metadata of the community is kept for archival purposes." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:34 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:41 +msgid "Reason for removal:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:37 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:44 +msgid "Removed by:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:46 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:46 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:53 +msgid "Removal note:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:50 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:57 +msgid "Date of removal:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:89 +msgid "profile" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/invenio_modular_deposit_form/templates/invenio_modular_deposit_form/deposit.html:20 +msgid "New upload" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:121 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:121 +msgid "Manage community" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/about/index.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/about/index.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/about/index.html:35 +msgid "Awards" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/about/index.html:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/about/index.html:35 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/about/index.html:51 +msgid "Visit external website" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/about/index.html:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/about/index.html:36 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/about/index.html:52 +msgid "Opens in new tab" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:4 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:4 +msgid "Community visibility" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:5 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:5 +msgid "The community is restricted to users with access." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/members/base.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/members/base.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/members/base.html:15 +msgid " members" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/members/base.html:20 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/members/base.html:20 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/members/base.html:23 +msgid "Invitations" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/requests/index.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/requests/index.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/requests/index.html:10 +msgid " requests" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:11 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:11 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/settings/base.html:16 +msgid " settings" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/settings/base.html:24 +msgid "Profile" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:20 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:20 +msgid "Privileges" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:21 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:21 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/settings/base.html:26 +msgid "Review policy" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/imprint.html:17 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/journal.html:18 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/imprint.html:17 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/journal.html:18 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:58 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:52 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:57 +msgid "Pages" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/macros/communities_carousel.html:11 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/macros/communities_carousel.html:11 +msgid "Featured communities" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/views/communities.py:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/views/communities.py:34 +msgid "Your community is publicly accessible and shows up in search results." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/views/communities.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/views/communities.py:41 +msgid "Your community is restricted to users with access." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/views/communities.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/views/communities.py:51 +msgid "" +"Members who have set their visibility to public are visible to anyone. " +"Members with hidden visibility are only visible to other members." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/views/communities.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/views/communities.py:60 +msgid "" +"Members in your community are only visible to other members of the " +"community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/views/communities.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/views/communities.py:72 +msgid "All submissions to the community must be reviewed." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/views/communities.py:79 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/views/communities.py:79 +msgid "" +"Submissions to the community by default requires review, but curators, " +"managers and owners can publish directly without review." +msgstr "" + +#. NOTE: This is a note to a translator. +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/build/lib/invenio_modular_deposit_form/ext.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/invenio_modular_deposit_form/ext.py:39 +msgid "A translation string" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/build/lib/invenio_modular_deposit_form/views.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/invenio_modular_deposit_form/views.py:30 +msgid "Invenio Modular Deposit Form" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/invenio_modular_deposit_form/templates/invenio_modular_deposit_form/deposit.html:18 +msgid "New version" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/invenio_modular_deposit_form/templates/invenio_modular_deposit_form/deposit.html:22 +msgid "Edit upload" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:56 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:56 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:99 +msgid "ORCID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:63 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:63 +msgid "ARK" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:64 +msgid "arXiv" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:66 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:66 +msgid "Bibcode" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:71 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:71 +msgid "Crossref Funder ID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:76 +msgid "EAN13" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:77 +msgid "EISSN" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:129 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:133 +msgid "Handle" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:84 +msgid "IGSN" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:83 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/imprint.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:83 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/imprint.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:134 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:42 +msgid "ISBN" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:87 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/journal.html:23 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:87 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/journal.html:23 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:144 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:75 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:148 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:67 +msgid "ISSN" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:88 +msgid "ISTC" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:89 +msgid "LISSN" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:90 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:90 +msgid "LSID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:91 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:91 +msgid "PMID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:92 +msgid "PURL" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:93 +msgid "UPC" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:149 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:153 +msgid "URL" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:95 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:95 +msgid "URN" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:96 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:96 +msgid "W3ID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:97 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:97 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:154 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:158 +msgid "Other" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:102 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:102 +msgid "Wikidata" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:103 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:103 +msgid "GeoNames" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:109 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:149 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:304 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:109 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:149 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:304 +msgid "Set name" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:74 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:114 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:150 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:308 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:74 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:114 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:150 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:308 +msgid "Set spec" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:152 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:312 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/config.py:55 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:152 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:312 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/config.py:55 +msgid "Created" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:153 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:316 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/config.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:153 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:316 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/config.py:59 +msgid "Updated" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/utils.py:117 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/utils.py:117 +msgid "Your shared link has expired." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:28 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:28 +msgid "OAI-PMH Sets" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:29 +msgid "Site management" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:122 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:151 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:122 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:151 +msgid "Search query" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:62 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:62 +msgid "Edit OAI-PMH set" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:145 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:145 +msgid "OAI-PMH" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:110 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:110 +msgid "A short human-readable string naming the set." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:116 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:116 +msgid "" +"An identifier for the set, which cannot be edited after the set is " +"created." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:124 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:124 +msgid "" +"See the supported query syntax in the Search " +"Guide." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:102 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:102 +msgid "Create OAI-PMH set" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:139 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:139 +msgid "OAI-PMH Details" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:44 +msgid "You must provide a valid URL." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/codemeta_fields.py:5 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/codemeta_fields.py:23 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/codemeta_fields.py:14 +msgid "Software" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:61 +msgid "Repository URL" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:63 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:63 +msgid "URL or link where the code repository is hosted." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:111 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:111 +msgid "Programming language" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:72 +msgid "Repository's programming language." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:73 +msgid "e.g. Python ..." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:85 +msgid "Development Status" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:86 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:86 +msgid "Repository status" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:88 +msgid "Repository current status." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:101 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:101 +msgid "Development status" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:35 +msgid "Please provide a valid ISBN." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:5 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:13 +msgid "Book / Report / Chapter" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:76 +msgid "Imprint (Book, Chapter, or Report)" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:78 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:103 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/imprint.html:7 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:78 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:103 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/imprint.html:7 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:24 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:32 +msgid "Place" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:79 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:79 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:25 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:33 +msgid "e.g. city, country" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:80 +msgid "Place where the book or report was published" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:43 +msgid "e.g. 0-06-251587-X" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:52 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:44 +msgid "International Standard Book Number" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:88 +msgid "Book or report title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:91 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:91 +msgid "Title of the book or report which this upload is part of" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:95 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:95 +msgid "Pagination" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:96 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:96 +msgid "e.g. 15-23 or 158" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:38 +msgid "Please provide a valid ISSN." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:18 +msgid "Journal" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:85 +msgid "Title of the journal in which the article was published" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/journal.html:8 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/journal.html:8 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_series_field.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_volumes_fields.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:45 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_series_field.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_volumes_fields.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/volumes.html:7 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_series_field.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_volumes_fields.py:57 +msgid "Volume" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:90 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:90 +msgid "e.g. 645" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/journal.html:13 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/journal.html:13 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:48 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:55 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:47 +msgid "Issue" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:95 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:95 +msgid "e.g. 7" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:99 +msgid "Page range or article number" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:100 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:100 +msgid "e.g. 15-23 or A29" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:105 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:105 +msgid "e.g. 2077-9550" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:106 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:106 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:69 +msgid "International Standard Serial Number" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/sort.py:14 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/sort.py:14 +msgid "Journal [Newest]" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:23 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:22 +msgid "Conference" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:9 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:9 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:39 +msgid "Acronym" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:98 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:14 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:98 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:14 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:48 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:49 +msgid "Dates" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:50 +msgid "e.g. 21-22 November 2022." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:105 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:105 +msgid "Location where the conference took place." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:108 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:24 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:108 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:24 +msgid "Website" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:83 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:81 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:82 +msgid "Session" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:114 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:114 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:83 +msgid "e.g. VI" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:115 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:115 +msgid "Session within the conference." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:118 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:118 +msgid "Part" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:119 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:119 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:93 +msgid "e.g. 1" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:120 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:120 +msgid "Part within the session." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/sort.py:14 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/sort.py:14 +msgid "Conference session [Newest]" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/thesis/custom_fields.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/thesis/custom_fields.py:32 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/thesis/custom_fields.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/thesis/custom_fields.py:32 +msgid "Thesis" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/thesis/custom_fields.py:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/thesis/custom_fields.py:35 +msgid "Awarding university" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/config.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/config.py:36 +msgid "Ascending" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/config.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/config.py:40 +msgid "Descending" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/config.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/config.py:51 +msgid "Spec" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/errors.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/errors.py:30 +#, python-brace-format +msgid "A set where {query_arguments} does not exist." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/errors.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/errors.py:43 +#, python-brace-format +msgid "A set with id {id} does not exist." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/errors.py:53 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/errors.py:53 +#, python-brace-format +msgid "A set with spec '{spec}' already exists." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/errors.py:63 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/errors.py:63 +#, python-brace-format +msgid "The set with id {id} is not editable." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/schema.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/schema.py:30 +msgid "Search pattern" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/services.py:81 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/services.py:81 +#, python-brace-format +msgid "The spec must not start with any of the following list '{prefix}'." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/services.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/services.py:93 +#, python-brace-format +msgid "The spec must only consist of letters, numbers or {marks}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/records/systemfields/draft_status.py:83 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/records/systemfields/draft_status.py:83 +#, python-brace-format +msgid "Unknown draft status for review: {reviewstatus}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/records/systemfields/draft_status.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/records/systemfields/draft_status.py:89 +msgid "Unknown draft status." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/community_inclusion.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/community_inclusion.py:99 +msgid "Community inclusion" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/community_submission.py:179 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/community_submission.py:179 +msgid "Community submission" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/community_transfer.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/community_transfer.py:26 +msgid "Community transfer" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/access/requests.py:189 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/access/requests.py:189 +#, python-format +msgid "Click here to access the record." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/access/requests.py:249 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/access/requests.py:281 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/access/requests.py:249 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/access/requests.py:281 +msgid "Access request" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/access/requests.py:318 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/access/requests.py:323 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/access/requests.py:318 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/access/requests.py:323 +msgid "Not a valid number of days." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:199 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:199 +msgid "Citation string style not found." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:205 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:205 +msgid "Review for draft not found" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:243 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:276 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:318 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:243 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:276 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:318 +msgid "Record not found" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:247 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:280 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:322 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:247 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:280 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:322 +msgid "Record deleted" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:255 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:255 +msgid "Cannot publish without selecting a community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:357 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:357 +msgid "No secret link found with the given ID." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:365 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:365 +msgid "No grant found with the given ID." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:378 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:378 +msgid "No grant found by given user id." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:385 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:385 +msgid "No grant found by given group id." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/iiif.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/iiif.py:99 +msgid "Image size limit exceeded" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/iiif.py:106 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/iiif.py:106 +msgid "" +"The record associated with this file has been deleted. See deletion " +"notice." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/deserializers/rocrate/__init__.py:31 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/deserializers/rocrate/__init__.py:31 +msgid "Invalid RO-Crate metadata format, missing '@graph' key." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/deserializers/rocrate/schema.py:32 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:365 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/deserializers/rocrate/schema.py:32 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:365 +msgid "Missing data for required field." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/deserializers/rocrate/schema.py:102 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/deserializers/rocrate/schema.py:102 +msgid "'@type' must be 'Person' or 'Organization'" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/deserializers/rocrate/schema.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/deserializers/rocrate/schema.py:138 +msgid "Format must be a list of strings." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/utils.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/utils.py:37 +#, python-format +msgid "The '%(vocabulary)s' vocabulary item '%(id_)s' was not found." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/cff/schema.py:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/cff/schema.py:29 +msgid "One of 'family-names' or 'given-names' is required." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/datacite/schema.py:281 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/datacite/schema.py:281 +msgid "Invalid publication date value." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/iiif/schema.py:167 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/iiif/schema.py:167 +msgid "Current Page Order" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/iiif/schema.py:194 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/iiif/schema.py:194 +msgid "Manifest generated by InvenioRDM" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/iiif/schema.py:213 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/iiif/schema.py:213 +msgid "Publication Date" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/schemaorg/schema.py:122 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/schemaorg/schema.py:122 +msgid "Affiliation failed to serialize: one of 'id' or 'name' must be provided." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/schemaorg/schema.py:363 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/schemaorg/schema.py:363 +msgid "" +"Funding serialization failed on award: one of 'id' or ('number' and " +"'title') are required." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:33 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:33 +msgid "Embargoed" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:35 +msgid "Metadata-only" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:65 +msgid "The record and files are publicly accessible." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:67 +msgid "No files are available for this record." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:76 +#, python-format +msgid "The record and files will be made publicly available on %(date)s." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:81 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:81 +msgid "The record and files are restricted to users with access." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:90 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:90 +#, python-format +msgid "The record will be made publicly available on %(date)s." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:94 +msgid "The record is restricted to users with access." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:102 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:102 +#, python-format +msgid "The files will be made publicly available on %(date)s." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:106 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:106 +msgid "" +"The record is publicly accessible, but files are restricted to users with" +" access." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:21 +msgid "Grant for this user/role already exists within this record." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:53 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:53 +#, python-format +msgid "Embargo could not be lifted for record: %(record_id)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:65 +msgid "Review not found." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:83 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:83 +msgid "The record is already included in this community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:93 +msgid "A public record cannot be included in a restricted community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:106 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:106 +msgid "There is already an open inclusion request for this community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:162 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:162 +#, python-format +msgid "The record %(rec_id)s in not included in the community %(com_id)s." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:178 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:178 +#, python-format +msgid "Cannot modify community visibility: %(reason)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:197 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:197 +#, python-format +msgid "Identical access requests already exist: %(request_id)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:201 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:201 +msgid "The access request is a duplicate" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:207 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:207 +msgid "Cannot publish without a community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:213 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:213 +msgid "A record should be part of at least 1 community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:30 +msgid "Access status" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:43 +msgid "Published" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:43 +msgid "Unpublished" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:49 +msgid "File type" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:56 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:56 +msgid "Languages" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:65 +msgid "Resource types" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/services.py:635 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/services.py:634 +msgid "" +"Record visibility can not be changed to restricted anymore. Please " +"contact support if you still need to make these changes." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:128 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:162 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:128 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:162 +msgid "Expiration date must be set to the future" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:156 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:156 +msgid "Cannot postpone expiration of links" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:183 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:183 +msgid "An access permission level is required" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:198 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:198 +msgid "Invalid access permission level." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:408 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:513 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:938 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:408 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:513 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:938 +msgid "Could not find the specified subject." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:733 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:733 +msgid "Verification link sent out, please check your e-mail inbox" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/communities/components.py:53 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/communities/components.py:53 +msgid "Cannot restrict a community with public records." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/communities/service.py:179 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/communities/service.py:179 +msgid "Community not found." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/communities/service.py:449 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/communities/service.py:449 +msgid "Community already included." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/community_inclusion/service.py:46 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/community_inclusion/service.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/community_inclusion/service.py:46 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/community_inclusion/service.py:60 +msgid "Invalid request type." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/community_records/service.py:131 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/community_records/service.py:131 +msgid "The record does not exist." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/community_records/service.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/community_records/service.py:138 +msgid "Permission denied." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/components/access.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/components/access.py:39 +msgid "You don't have permissions to manage record access." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/components/review.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/components/review.py:38 +msgid "" +"You cannot delete a draft with an open review. Please cancel the review " +"first." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/github/metadata.py:58 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/github/metadata.py:58 +msgid "No description provided." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/github/metadata.py:167 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/github/metadata.py:167 +msgid "Citation schema is needed to load citation metadata." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/errors.py:23 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/errors.py:23 +#, python-brace-format +msgid "No configuration defined for PIDs {schemes}" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/errors.py:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/errors.py:34 +#, python-format +msgid "Unknown PID provider %(provider)s for %(scheme)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/manager.py:87 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/manager.py:87 +#, python-brace-format +msgid "Invalid {scheme}" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/manager.py:166 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/manager.py:166 +#, python-brace-format +msgid "A PID already exists for type {scheme}" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/manager.py:173 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/manager.py:173 +msgid "External identifier value is required." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/manager.py:211 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/manager.py:241 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/manager.py:211 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/manager.py:241 +#, python-brace-format +msgid "PID not found for type {scheme}" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/manager.py:268 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/manager.py:268 +msgid "Cannot discard a reserved or registered persistent identifier." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/providers/base.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/providers/base.py:85 +msgid "You must provide a pid value." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/providers/base.py:176 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/providers/base.py:176 +#, python-brace-format +msgid "{pid_type}:{identifier} already exists." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/providers/datacite.py:281 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/providers/datacite.py:281 +msgid "Missing publisher field required for DOI registration." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/providers/external.py:45 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/providers/external.py:45 +#, python-brace-format +msgid "" +"The prefix '{prefix}' is managed by {sitename}. Please supply an external" +" DOI or select 'No' to have a DOI generated for you." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/providers/external.py:91 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/providers/external.py:91 +#, python-brace-format +msgid "Missing {scheme} for required field." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/review/service.py:52 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/review/service.py:52 +msgid "Invalid review type." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/review/service.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/review/service.py:59 +msgid "A review already exists for this record" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/review/service.py:63 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/review/service.py:63 +msgid "You cannot create a review for an already published record." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/review/service.py:132 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/review/service.py:132 +msgid "You cannot delete a review for a draft that has already been published." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/review/service.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/review/service.py:138 +msgid "An open review cannot be deleted." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/review/service.py:157 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/review/service.py:157 +msgid "Must be a boolean, true or false" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/access.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/access.py:39 +msgid "Embargo end date must be set to a future date." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/access.py:48 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/access.py:48 +msgid "Embargo end date must be unset or in the past." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/access.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/access.py:65 +#, python-brace-format +msgid "'{field_name}' must be either 'public' or 'restricted'" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/community_records.py:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/community_records.py:34 +#, python-brace-format +msgid "Too many records passed, {max_number} max allowed." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/community_records.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/community_records.py:51 +#, python-brace-format +msgid "Duplicated records {rec_ids}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:75 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:75 +msgid "Only one value is accepted." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:77 +msgid "Not a valid locale." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:93 +#, python-brace-format +msgid "Invalid value. Choose one of {NAMES}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:116 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:116 +msgid "Family name cannot be blank." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:121 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:121 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/schema.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/schema.py:44 +msgid "Name cannot be blank." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:157 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:157 +msgid "Duplicated affiliations: " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:216 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:228 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:216 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:228 +msgid "Not a valid URL." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:248 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:248 +msgid "An existing id or a free text title must be present" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:254 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:254 +msgid "" +"Only an existing id or free text title/description/link is accepted, but " +"not both cases at the same time" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:344 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:344 +msgid "" +"At least one of ['geometry', 'place', identifiers', " +"'description'] must be present." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:368 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:368 +msgid "Title cannot be a blank string." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:385 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:385 +msgid "Size cannot be a blank string." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:388 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:388 +msgid "Format cannot be a blank string." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/record.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/record.py:36 +msgid "Invalid persistent identifier scheme." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/record_communities.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/record_communities.py:37 +#, python-brace-format +msgid "Too many communities passed, {max_number} max allowed." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/record_communities.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/record_communities.py:54 +#, python-brace-format +msgid "Duplicated communities {com_ids}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/parent/__init__.py:28 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/parent/__init__.py:28 +#, python-brace-format +msgid "Invalid persistent identifier scheme {scheme}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/imprint.html:2 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/imprint.html:2 +msgid "Publisher" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:91 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:92 +msgid "Session part" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:23 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:23 +msgid "" +"Missing \"kid\" key with personal access token ID in JWT header of " +"resource access token." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:32 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:32 +msgid "" +"\"kid\" JWT header value of resource access token not a valid personal " +"access token ID." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:40 +msgid "Failed to decode resource access token." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:46 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:46 +msgid "The resource access token is invalid." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:52 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:52 +msgid "The resource access token subject is invalid." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:58 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:58 +msgid "The resource access token is expired." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:64 +msgid "Resource Access Tokens feature is currently disabled." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/scopes.py:16 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/scopes.py:16 +msgid "Allow generation of granular access JWT tokens." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/custom_fields.py:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-api-provisioner/tests/conftest.py:179 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/custom_fields.py:122 +msgid "Commons search update info" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:103 +msgid "Knowledge Commons Username" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:108 +msgid "Humanities Commons Username" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:124 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:128 +msgid "DataCite DOI" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/hclegacy_metadata_fields.py:248 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/hclegacy_metadata_fields.py:242 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/hclegacy_metadata_fields.py:244 +msgid "Commons legacy info" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:28 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:20 +msgid "Book title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:15 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:31 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:23 +msgid "Title of the book or report which this upload is part of." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:34 +msgid "Place where the imprint was published" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:33 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:25 +msgid "Journal Title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_ai_field.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_ai_field.py:62 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_ai_field.py:61 +msgid "Was AI Used" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_ai_field.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_ai_field.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_ai_field.py:64 +msgid "Did generative AI contribute to the production of this work?" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_ai_field.py:66 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_ai_field.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_ai_field.py:66 +msgid "Yes" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_ai_field.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_ai_field.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_ai_field.py:67 +msgid "No" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_ai_field.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_ai_field.py:71 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_ai_field.py:70 +msgid "Description of use" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_media_field.py:20 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_media_field.py:18 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_media_field.py:18 +msgid "Media" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_media_field.py:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_media_field.py:25 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_media_field.py:25 +msgid "Media and materials" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_media_field.py:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_media_field.py:27 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_media_field.py:27 +msgid "Enter each of the materials used here (press 'enter' to add each one)" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:103 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:118 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:101 +msgid "Department" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:111 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:126 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:109 +msgid "Chapter" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:121 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:136 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:119 +msgid "Degree" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:131 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:146 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:129 +msgid "Discipline" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:141 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:156 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:139 +msgid "Edition" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:151 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:166 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:149 +msgid "Commons domain" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:162 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:178 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:161 +msgid "Course title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:219 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:235 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:218 +msgid "Meeting organization" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:230 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:245 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:228 +msgid "Sponsoring institution" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:251 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:268 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:251 +msgid "Commons admin info" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:282 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:299 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:282 +msgid "Course" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:75 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/notes.html:11 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:60 +msgid "Notes" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/notes.html:7 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/notes.html:14 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:62 +msgid "Description" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:65 +msgid "A few words describing the kind of notes recorded here." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:75 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:69 +msgid "Note" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:70 +msgid "Type your note content here" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:86 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:71 +msgid "The text of your note" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_series_field.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_series_field.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_series_field.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_series_field.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/book_series_field.html:1 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_series_field.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_series_field.py:57 +msgid "Series" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_series_field.py:63 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_series_field.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/book_series_field.html:4 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_series_field.py:59 +msgid "Series Title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_user_tags_fields.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_user_tags_fields.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_user_tags_fields.py:55 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_user_tags_fields.py:62 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_user_tags_fields.py:55 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_user_tags_fields.py:62 +msgid "Tags" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_user_tags_fields.py:78 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_user_tags_fields.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_user_tags_fields.py:64 +msgid "Type your keywords here (press 'enter' to add each one)" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_volumes_fields.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_volumes_fields.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_volumes_fields.py:49 +msgid "Volumes" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_volumes_fields.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_volumes_fields.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/volumes.html:2 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_volumes_fields.py:51 +msgid "Total volumes" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:28 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:29 +msgid "Event title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:60 +msgid "Location" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:71 +msgid "Event URL" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/resources/errors.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/resources/errors.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/resources/errors.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/resources/errors.py:61 +msgid "Invalid query string syntax." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/resources/errors.py:62 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/resources/errors.py:62 +msgid "Misconfigured search." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/resources/errors.py:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/resources/errors.py:73 +msgid "Internal server error" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/errors.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/errors.py:69 +#, python-brace-format +msgid "Facet {vocab} not found." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/errors.py:78 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/errors.py:78 +#, python-brace-format +msgid "Record '{recid}' has no file '{file_key}'." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/errors.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/errors.py:92 +#, python-brace-format +msgid "Record '{recid}' failed to upload file '{file_key}'." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/errors.py:108 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/errors.py:108 +#, python-brace-format +msgid "" +"Uploading the selected files would result in {files_count} files (max is " +"{max_files})." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/files/transfer.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/files/transfer.py:77 +msgid "File size limit exceeded." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/files/transfer.py:103 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/files/transfer.py:103 +msgid "Empty files are not accepted." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/records/components/files.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/records/components/files.py:89 +msgid "You must first delete all files to set the record to be metadata-only." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/records/queryparser/transformer.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/records/queryparser/transformer.py:67 +#, python-brace-format +msgid "Invalid search field: {field_name}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/config.py:49 +msgid "Funders" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/datastreams.py:117 +#, python-brace-format +msgid "Unknown OpenAIRE funder prefix {openaire_funder_prefix}" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/datastreams.py:158 +#, python-brace-format +msgid "Missing title attribute for award {award_id}" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/schema.py:41 +msgid "Number cannot be blank." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/schema.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/schema.py:60 +msgid "PID cannot be blank." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/schema.py:80 +msgid "An existing id or number/title must be present." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/schema.py:97 +msgid "At least award or funder should be present." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/datastreams.py:46 +msgid "Id not found in ROR entry." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/datastreams.py:79 +msgid "Name with type ror_display not found in ROR entry." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/schema.py:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/schema.py:111 +msgid "Missing PID." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/names/schema.py:54 +msgid "A name or the family name together with the given name must be present." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/names/schema.py:68 +msgid "Duplicated affiliations." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/components.py:29 +msgid "The vocabulary type does not exists." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/schema.py:79 +#, python-brace-format +msgid "An existing id or a free text {ftf_name} must be present." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/subjects.html:16 +msgid "Search results for " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_default_viewer/default_viewer.html:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_docx_viewer/docx_viewer.html:25 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_latex_viewer/latex_viewer.html:25 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pptx_viewer/pptx_viewer.html:25 +msgid "Cannot preview file" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_default_viewer/default_viewer.html:28 +msgid "Sorry, we cannot currently preview this kind of file" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_docx_viewer/docx_viewer.html:26 +msgid "Sorry, we cannot currently preview MS Word file formats (.docx, .doc)." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_latex_viewer/latex_viewer.html:26 +msgid "Sorry, we cannot currently preview LaTeX file formats (.tex, .bib)." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:40 +msgid "Thumbnails" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:49 +msgid "Document Outline" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:64 +msgid "Find:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:75 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:249 +msgid "Previous" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:259 +msgid "Next" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:94 +msgid "Highlight all" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:102 +msgid "Match case" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:284 +msgid "Switch to Full Screen Mode" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:116 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:287 +msgid "Full Screen Mode" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:122 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:126 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:293 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:297 +msgid "Print" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:144 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:148 +msgid "Go to First Page" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:153 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:157 +msgid "Go to Last Page" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:165 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:170 +msgid "Rotate Clockwise" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:176 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:181 +msgid "Rotate Counterclockwise" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:195 +msgid "Enable hand tool" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:204 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:209 +msgid "Document Properties" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:223 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:228 +msgid "Toggle Sidebar" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:235 +msgid "Find in Document" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:239 +msgid "Find" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:244 +msgid "Previous Page" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:254 +msgid "Next Page" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:267 +msgid "Page:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:315 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:319 +msgid "Tools" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:328 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:332 +msgid "Zoom Out" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:338 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:342 +msgid "Zoom In" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:348 +msgid "Zoom" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:358 +msgid "Automatic Zoom" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:365 +msgid "Actual Size" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:372 +msgid "Fit Page" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:379 +msgid "Full Width" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:404 +msgid "First Page" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:432 +msgid "More Information" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:435 +msgid "Less Information" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:440 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:547 +msgid "Close" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:454 +msgid "Enter the password to open this PDF file:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:463 +msgid "Cancel" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:466 +msgid "OK" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:475 +msgid "File name:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:481 +msgid "File size:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:487 +msgid "Title:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:492 +msgid "Author:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:498 +msgid "Subject:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:504 +msgid "Keywords:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:510 +msgid "Creation Date:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:516 +msgid "Modification Date:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:522 +msgid "Creator:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:529 +msgid "PDF Producer:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:535 +msgid "PDF Version:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:541 +msgid "Page Count:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:559 +msgid "Preparing document for printing..." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pptx_viewer/pptx_viewer.html:26 +msgid "Sorry, we cannot currently preview PowerPoint file formats (.pptx, .ppt)." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/notes.html:2 +msgid "Note text" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/view_templates/admin_login.html:30 +#, python-format +msgid "Sign in with %(title)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/view_templates/admin_login.html:39 +msgid "Or" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/ai_usage.html:16 +msgid "AI Used" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/ai_usage.html:21 +msgid "Usage Description" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/security/email/welcome.html:10 +#, python-format +msgid "Welcome %(email)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/security/email/welcome.html:21 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/security/email/welcome.html:10 +msgid "You can confirm your email through the link below:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/security/email/welcome.html:23 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/security/email/welcome.html:12 +msgid "Confirm my account" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/footer.html:41 +#, python-format +msgid "" +"\n" +" %(link_text)s\n" +" " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_frontpage.html:57 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:65 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:66 +msgid "Add a work" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:16 +msgid "Log in" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_saml/login_user.html:47 +msgid "Sign up" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:59 +msgid "Quick create" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:77 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:118 +msgid "My account" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:112 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:141 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:156 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:157 +msgid "Log out" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:11 +msgid "You've successfully installed InvenioRDM!" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:13 +msgid "What is ahead?" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:23 +msgid "Configure" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:26 +#, python-format +msgid "" +"\n" +" Configure the datamodel, resource types, permissions and much" +" more to make it suit your needs! For more\n" +" information on how to do it visit the configuration\n" +" section in the docs.\n" +" " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:41 +msgid "Customize" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:44 +#, python-format +msgid "" +"\n" +" Customize the layout and adapt the styling to match your " +"institution's. See how to do so here.\n" +" " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:57 +msgid "Run it!" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:59 +#, python-format +msgid "" +"\n" +" Run " +"your\n" +" InvenioRDM instance locally or in containers.\n" +" " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:77 +msgid "Docs" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:86 +msgid "Code" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:93 +msgid "To disable this section, add" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:95 +msgid "to your invenio.cfg file." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/site_footer.html:7 +#, python-format +msgid "" +"\n" +" Powered by\n" +" InvenioRDM\n" +" " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/site_footer.html:19 +#, python-format +msgid "" +"\n" +" Support the Commons\n" +" " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/records/search.html:25 +msgid "In this community" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/records/search.html:30 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/records/search.html:38 +msgid "All" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/records/search.html:62 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/records/search.html:63 +msgid "Search works" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/users/communities.html:13 +msgid "My Collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/users/header.html:29 +msgid "My dashboard" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/users/header.html:30 +msgid "Anonymous user" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/users/requests.html:13 +msgid "My Inbox" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/users/uploads.html:13 +msgid "My Uploads" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:23 +msgid "Works Collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:36 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:37 +msgid "Search collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:53 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:55 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/search.html:30 +msgid "New collection" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:54 +msgid "New" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:63 +msgid "My collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:72 +msgid "New collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:80 +msgid "Commons Collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:88 +msgid "Journals" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:96 +msgid "Organization collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:106 +msgid "Topic collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:114 +msgid "Event collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/new.html:15 +msgid "New Collection" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/search.html:15 +msgid "Search Collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/search.html:25 +msgid "Collections Search" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:32 +#, python-format +msgid "" +"\n" +" The collection you are trying to access was removed from " +"%(sitename)s. The\n" +" metadata of the collection is kept for archival purposes." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/curation_policy/index.html:16 +msgid "Curation Policy" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:17 +msgid "Collection visibility" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:18 +msgid "The collection is restricted to users with access." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/settings/base.html:27 +msgid "About and Curation" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/macros/communities_carousel.html:14 +msgid "Featured collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/records/index.html:12 +msgid "Search " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_previewer/csv_bar.html:24 +msgid "Show more" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_saml/login_user.html:24 +msgid "Log in with your account from" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_saml/login_user.html:38 +#, python-format +msgid "%(title)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_saml/login_user.html:47 +msgid "Not yet a member?" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/security/email/welcome.html:8 +#, python-format +msgid "Welcome %(email)s!" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:163 +msgid "Import Record ID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:168 +msgid "NEH Record ID" msgstr "" diff --git a/translations/messages.pot b/translations/messages.pot index 8783bec7e..5d165849f 100644 --- a/translations/messages.pot +++ b/translations/messages.pot @@ -1,508 +1,3678 @@ # Translations template for PROJECT. -# Copyright (C) 2023 MESH Research +# Copyright (C) 2025 MESH Research # This file is distributed under the same license as the PROJECT project. -# FIRST AUTHOR , 2023. +# FIRST AUTHOR , 2025. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: scottia4@msu.edu\n" -"POT-Creation-Date: 2023-10-06 10:35-0400\n" +"POT-Creation-Date: 2025-04-30 16:52-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.12.1\n" +"Generated-By: Babel 2.17.0\n" -#: /Users/ianscott/Development/kcworks/invenio.cfg:130 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:201 msgid "KCR thesis information" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:140 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:209 +msgid "KCR journal information" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:218 msgid "KCR Book information" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:149 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:224 msgid "KCR Conference information" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:155 -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:166 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:166 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:228 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:242 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:257 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:240 msgid "Content warning" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:368 -#: /Users/ianscott/Development/kcworks/invenio.cfg:375 -#: /Users/ianscott/Development/kcworks/invenio.cfg:412 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:279 +msgid "Discover" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:284 +msgid "Publish" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:289 +msgid "Collect" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:294 +msgid "Collaborate" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:556 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:56 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:144 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:186 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:90 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:121 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:56 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:144 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:186 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:90 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:121 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:213 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:213 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/records/config.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/records/config.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/affiliations/config.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/config.py:45 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/names/config.py:45 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/subjects/config.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/service.py:82 +msgid "Best match" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:560 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:152 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:194 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:98 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:129 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:152 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:194 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:98 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:129 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:217 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:217 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/records/config.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/records/config.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/affiliations/config.py:46 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/config.py:53 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/names/config.py:53 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/subjects/config.py:46 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/service.py:90 +msgid "Newest" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:564 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:156 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:198 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:102 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:133 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:156 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:198 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:102 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:133 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:221 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:221 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/records/config.py:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/records/config.py:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/affiliations/config.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/config.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/names/config.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/subjects/config.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/service.py:94 +msgid "Oldest" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:568 +msgid "Most recently published" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:572 +msgid "Earliest published" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:576 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:225 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:225 +msgid "Version" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:580 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:229 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:229 +msgid "Recently updated" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:584 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:233 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:233 +msgid "Least recently updated" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:588 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:237 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:237 +msgid "Most viewed" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:591 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:240 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:240 +msgid "Most downloaded" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:641 +msgid "Help & FAQ" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:643 +msgid "Terms of use" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:647 +msgid "Privacy policy" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:651 +msgid "Guidelines for use" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:654 +msgid "Mesh Research" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:661 +msgid "Knowledge Commons" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:663 +msgid "LinkedIn" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:668 +msgid "hcommons.social" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:673 +msgid "Newsletter" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:681 +msgid "Supporters" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:690 +msgid "Michigan State University" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:692 +msgid "National Science Foundation" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:697 +msgid "National Endowment for the Humanities" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:708 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:17 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:17 +msgid "Manage" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:710 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:132 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:136 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:303 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:307 +msgid "Download" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:715 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:15 +msgid "Collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:720 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:50 +msgid "Content Warning" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:724 +msgid "AI Use" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:728 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:44 +msgid "Versions" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:733 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:55 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:55 +msgid "Keywords & Subjects" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:738 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:61 +msgid "Cite this" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:743 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:811 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:170 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:170 +msgid "Details" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:764 +msgid "Licenses" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:769 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:93 +msgid "Export" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:774 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:99 +msgid "Share" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:784 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:112 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:112 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/imprint.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/journal.html:3 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:4 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/imprint.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/journal.html:3 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:4 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/service.py:86 +msgid "Title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:788 +msgid "Creators and Contributors" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:796 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:134 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:134 +msgid "Content" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:800 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:138 +msgid "Descriptions" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:804 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:148 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:148 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_docx_viewer/base.html:20 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/base.html:12 +msgid "Preview" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:815 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:826 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:174 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:199 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:174 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:199 +msgid "Publication" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:819 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:926 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:117 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:192 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:271 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:117 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:192 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:271 +msgid "Contributors" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:855 +msgid "Technical specifications" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:863 +msgid "Project details" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:871 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:215 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:215 +msgid "Additional titles" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:877 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:221 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:221 +msgid "Funding" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:881 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:225 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:225 +msgid "Identifiers" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:888 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:232 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:232 +msgid "Related" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:894 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:238 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:238 +msgid "References" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:900 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:244 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:244 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_ai_field.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_ai_field.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_ai_field.py:59 +msgid "AI Usage" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:912 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:939 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:256 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:294 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:256 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:294 +msgid "Analytics" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:951 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:313 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:313 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:108 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:108 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/custom_fields/subject.py:49 +msgid "Subjects" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:962 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:326 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:326 +msgid "Files" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1037 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1044 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1060 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1169 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:75 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:336 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:343 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:366 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/tests/conftest.py:268 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/tests/conftest.py:275 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:75 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:336 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:343 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:366 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/tests/conftest.py:268 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/tests/conftest.py:275 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:66 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:79 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:119 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:189 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-api-provisioner/tests/conftest.py:296 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-api-provisioner/tests/conftest.py:305 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:123 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:213 msgid "DOI" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:380 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1049 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:348 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/tests/conftest.py:280 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:348 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/tests/conftest.py:280 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:71 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-api-provisioner/tests/conftest.py:310 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:97 msgid "OAI ID" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:386 -msgid "hclegacy-pid" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1068 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:374 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:374 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:39 +msgid "OAI" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1080 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:394 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:404 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/tests/conftest.py:289 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:394 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:404 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/tests/conftest.py:289 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:50 +msgid "Concept DOI" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1092 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:109 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:113 +msgid "Humanities Commons Legacy PID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1097 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:114 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:118 +msgid "Humanities Commons Legacy Record ID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1102 +msgid "DOI (DataCite)" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1107 +msgid "Alternate DOI" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:391 -msgid "hclegacy-record-id" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1112 +msgid "Import record ID" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:396 -msgid "datacite-doi" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1117 +msgid "NEH record ID" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:403 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1127 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:162 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:176 msgid "hcid" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:404 -msgid "hc_username" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1132 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:167 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:181 +msgid "kcid" msgstr "" -#: /Users/ianscott/Development/kcworks/invenio.cfg:419 -msgid "OAI" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1137 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1142 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:172 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:177 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:186 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:191 +msgid "KC member" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:5 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:5 -msgid "Book / Report / Chapter" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1147 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:196 +msgid "NEH user ID" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:12 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:12 -msgid "Book title" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1152 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:201 +msgid "Import user ID" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:14 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:14 -msgid "Title of the book or report which this upload is part of." +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1160 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:78 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:78 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:183 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:207 +msgid "GRID" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:24 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:24 -msgid "Place" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1161 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:58 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:58 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:184 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:101 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:208 +msgid "GND" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:25 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:25 -msgid "e.g. city, country" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1162 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:86 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:86 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:139 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:185 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:100 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:143 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:209 +msgid "ISNI" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:26 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:26 -msgid "Place where the imprint was published" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1163 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:186 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:210 +msgid "ROR" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:34 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:34 -msgid "ISBN" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1170 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:191 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:215 +msgid "Open Funder Registry" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:35 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:35 -msgid "e.g. 0-06-251587-X" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1198 +msgid "Welcome to KCWorks!" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:36 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:36 -msgid "International Standard Book Number" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1710 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:86 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:86 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:108 +msgid "Reader" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/imprint_fields.py:44 -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/journal_fields.py:57 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/imprint_fields.py:44 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/journal_fields.py:57 -msgid "Pages" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1711 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:87 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:87 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:109 +msgid "Can view restricted records." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/journal_fields.py:19 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/journal_fields.py:19 -msgid "Journal" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1716 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:114 +msgid "Curator" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/journal_fields.py:26 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/journal_fields.py:26 -msgid "Journal Title" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1717 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:115 +msgid "Can curate records and view restricted records." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/journal_fields.py:38 -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_series_field.py:75 -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_volumes_fields.py:67 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/journal_fields.py:38 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_series_field.py:75 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_volumes_fields.py:67 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/volumes.html:7 -msgid "Volume" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1723 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:121 +msgid "Manager" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/journal_fields.py:48 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/journal_fields.py:48 -msgid "Issue" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1725 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:101 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:101 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:123 +msgid "Can manage members, curate records and view restricted records." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/journal_fields.py:66 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/journal_fields.py:66 -msgid "ISSN" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1734 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:110 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:110 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:142 +msgid "Owner" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/journal_fields.py:68 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/journal_fields.py:68 -msgid "International Standard Serial Number" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1735 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:111 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:111 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-user-data-kcworks/tests/conftest.py:143 +msgid "Full administrative access to the entire community." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_ai_field.py:62 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_ai_field.py:62 -msgid "AI Usage" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1871 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:3880 +msgid "Add Contributor" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_ai_field.py:64 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_ai_field.py:64 -#: /Users/ianscott/Development/kcworks/templates/ai_usage.html:2 -msgid "AI Used" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:1872 +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:3881 +msgid "Edit Contributor" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_ai_field.py:66 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_ai_field.py:66 -msgid "Did generative AI contribute to the production of this work?" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:5178 +msgid "e.g., 32 x 24 cm or 1.5 GB (press 'enter' to add)" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_ai_field.py:69 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_ai_field.py:69 -msgid "Description of use" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:5193 +msgid "Copy/paste your existing DOI here..." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_ai_field.py:70 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_ai_field.py:70 -msgid "Describe how artificial intelligence or machine learning were used." +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:5194 +msgid "Discard the reserved DOI." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:82 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:82 -msgid "Department" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:5195 +msgid "Get a DOI now!" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:92 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:92 -msgid "Chapter" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:5197 +msgid "" +"Reserve a DOI by pressing the button (so it can be included in files " +"prior to upload). The DOI is registered when your upload is published." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:103 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:103 -msgid "Edition" +#: /Users/ianscott/Development/knowledge-commons-works/invenio.cfg:5202 +msgid "" +"Only enter a DOI if you have already registered one with a DOI provider. " +"If you have not registered one we will register a DOI for you when your " +"upload is published." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:148 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/config.py:190 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/config.py:125 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:148 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/config.py:190 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/config.py:125 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/config.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/config.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/affiliations/config.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/config.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/names/config.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/subjects/config.py:42 +msgid "Name" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/errors.py:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/errors.py:27 +#, python-brace-format +msgid "A featured community entry with {q} does not exist." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/errors.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/errors.py:41 +#, python-brace-format +msgid "Logo size limit exceeded. Limit: {limit} bytes Given: {file_size} bytes" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/errors.py:55 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/errors.py:55 +#, python-format +msgid "" +"There is %(num)s request open for this community. Please, resolve it " +"before deleting this community." +msgid_plural "" +"There are %(num)s requests open for this community. Please, resolve all " +"of them before deleting this community." +msgstr[0] "" +msgstr[1] "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/errors.py:87 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/errors.py:87 +msgid "" +"Cannot set community as the default. The record has not been added to the" +" community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:133 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:13 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:25 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/search.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:133 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:13 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:25 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/search.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/build/lib/invenio_modular_detail_page/config.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-detail-page/invenio_modular_detail_page/config.py:38 +msgid "Communities" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/new.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/search.html:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/new.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/search.html:27 +msgid "New community" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:147 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:147 +msgid "Requests" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:114 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:114 -msgid "Commons domain" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:154 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/members/base.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:154 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/members/base.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/members/base.html:22 +msgid "Members" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:145 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:145 -msgid "Meeting organization" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:162 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:162 +msgid "Settings" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:156 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:156 -msgid "Sponsoring institution" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:170 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:170 +msgid "Curation policy" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_metadata_fields.py:174 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_metadata_fields.py:174 -msgid "Commons admin info" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/ext.py:178 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/ext.py:178 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/about/index.html:24 +msgid "About" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:59 -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:65 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:59 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:65 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/notes.html:11 -msgid "Notes" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/schema.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/schema.py:51 +#, python-brace-format +msgid "Field cannot be blank or longer than {max_} characters." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:67 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:67 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/notes.html:7 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/notes.html:14 -msgid "Description" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/schema.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/schema.py:61 +#, python-brace-format +msgid "Field cannot be longer than {max} characters." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:69 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:69 -msgid "A few words describing the kind of notes recorded here." +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/schema.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/schema.py:72 +msgid "The ID must not be an Universally Unique IDentifier (UUID)." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:75 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:75 -msgid "Note" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/schema.py:220 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/schema.py:220 +msgid "The ID should contain only letters with numbers or dashes." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:76 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:76 -msgid "Type your note content here" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/schema.py:323 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/schema.py:323 +msgid "Deleted community" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_notes_fields.py:77 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_notes_fields.py:77 -msgid "The text of your note" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/schema.py:324 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/schema.py:324 +msgid "The community was deleted." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_series_field.py:61 -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_series_field.py:68 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_series_field.py:61 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_series_field.py:68 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/book_series_field.html:1 -msgid "Series" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/resources/config.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/resources/config.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/resources/config.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/resources/config.py:54 +msgid "The record has been deleted." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_series_field.py:70 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_series_field.py:70 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/book_series_field.html:4 -msgid "Series Title" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/resources/ui_schema.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/resources/ui_schema.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/schema.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/github/release.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/schema.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/github/release.py:60 +msgid "Unknown" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_user_tags_fields.py:71 -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_user_tags_fields.py:78 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_user_tags_fields.py:71 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_user_tags_fields.py:78 -msgid "Tags" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/resources/ui_schema.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/resources/ui_schema.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/schema.py:111 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/schema.py:111 +msgid "System (automatic)" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_user_tags_fields.py:79 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_user_tags_fields.py:79 -msgid "Type your keywords here (press 'enter' to add each one)" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/resources/ui_schema.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/resources/ui_schema.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/schema.py:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/schema.py:113 +msgid "Admin" msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_volumes_fields.py:59 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_volumes_fields.py:59 -msgid "Volumes" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/components.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/components.py:38 +msgid "A community with this identifier already exists." msgstr "" -#: /Users/ianscott/Development/kcworks/site/build/lib/kcworks/metadata_fields/kcr_volumes_fields.py:61 -#: /Users/ianscott/Development/kcworks/site/kcworks/metadata_fields/kcr_volumes_fields.py:61 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/volumes.html:2 -msgid "Total volumes" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/components.py:56 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/components.py:56 +msgid "The ID should be modified through the renaming URL instead." msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/invenio_saml/login_user.html:23 -msgid "Log in to account" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/components.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/components.py:64 +msgid "A new ID value is required for the renaming." msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/invenio_saml/login_user.html:38 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/view_templates/admin_login.html:30 -#, python-format -msgid "Sign in with %(title)s" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/components.py:141 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/components.py:141 +msgid "The community is not public." msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/notes.html:2 -msgid "Note text" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/config.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/config.py:54 +msgid "Featured" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/deposit.html:9 -msgid "New version" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:16 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:16 +msgid "Type" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/deposit.html:11 -msgid "New upload" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:18 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:18 +msgid "Organization" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/deposit.html:13 -msgid "Edit upload" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:19 +msgid "Event" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:28 -msgid "Information banner" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:20 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:20 +msgid "Topic" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:48 -msgid "Community visibility" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:276 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:293 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:276 +msgid "Project" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:49 -msgid "The community is restricted to users with access." +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:47 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/settings/base.html:25 +msgid "Visibility" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:37 +msgid "Public" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:9 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:9 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:34 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:22 msgid "Restricted" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:67 -msgid "Preview" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/communities/services/facets.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/communities/services/facets.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:37 +msgid "Hidden" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:18 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:18 +msgid "Role" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:24 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:24 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:42 +msgid "Status" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:26 +msgid "Submitted" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:27 +msgid "Expired" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:28 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:28 +msgid "Accepted" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:29 +msgid "Declined" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:30 +msgid "Cancelled" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:71 -msgid "You are previewing a published record." +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:32 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:32 +msgid "Open" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:73 -msgid "You are previewing changes that have not yet been published." +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/facets.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/facets.py:43 +msgid "Closed" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:75 -msgid "You are previewing a new record that has not yet been published." +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/fields.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/fields.py:21 +msgid "Invalid role." msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:77 -msgid "You are previewing a new record version that has not yet been published." +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/request.py:103 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/request.py:103 +msgid "Community invitation" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/schemas.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/schemas.py:89 +msgid "Missing fields 'role' and/or 'visible'." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/schemas.py:117 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/schemas.py:117 +msgid "Untitled" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:197 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:197 +msgid "Must be false" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:219 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:219 +msgid "Invalid member type: email" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:278 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:278 +#, python-brace-format +msgid "Invitation to join \"{community}\"" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:281 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:281 +#, python-brace-format +msgid "You will join as \"{role}\"." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:538 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:660 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:538 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:660 +msgid "A community must have at least one owner." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:567 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:567 +msgid "You cannot change your own role." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:575 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:575 +msgid "You can only set public visibility on your own membership." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/members/services/service.py:584 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/members/services/service.py:584 +#, python-brace-format +msgid "You will join as \"{role}\" (changed from: \"{previous}\")." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/requests/user_moderation/actions.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/requests/user_moderation/actions.py:72 +msgid "User was blocked" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:31 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:31 +msgid "" +"Organize, curate and collaborate on records for your institution, " +"project, topic or event." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/search.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/search.html:12 +msgid "Search communities" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:49 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_frontpage.html:47 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_frontpage.html:48 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/records/search.html:13 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:40 +msgid "Search" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:71 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:71 +msgid "My communities" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:83 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:83 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:65 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:74 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:82 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:90 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:99 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:108 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:116 +msgid "See all" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:81 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/frontpage.html:81 +msgid "New communities" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:10 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:10 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:17 +msgid "Tombstone" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:20 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:20 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:27 +msgid "Gone" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:25 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:25 #, python-format msgid "" "\n" -" There is a %(link_start)snewer version%(link_end)s of" -" the record available.\n" -" " +" The community you are trying to access was removed from " +"%(sitename)s. The\n" +" metadata of the community is kept for archival purposes." msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:114 -msgid "Record access information" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:34 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:41 +msgid "Reason for removal:" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:121 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:309 -msgid "Reason" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:37 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:44 +msgid "Removed by:" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:133 -msgid "Back-navigation" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:46 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:46 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:53 +msgid "Removal note:" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:135 -msgid "Back to edit" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/tombstone.html:50 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:57 +msgid "Date of removal:" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:151 -msgid "Manage record" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:89 +msgid "profile" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:166 -msgid "Publication date and version number" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/invenio_modular_deposit_form/templates/invenio_modular_deposit_form/deposit.html:20 +msgid "New upload" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:170 -msgid "Publication date" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:121 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/header.html:121 +msgid "Manage community" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:171 -msgid "Published" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/about/index.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/about/index.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/about/index.html:35 +msgid "Awards" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:174 -msgid "Version {version_number}" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/about/index.html:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/about/index.html:35 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/about/index.html:51 +msgid "Visit external website" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:179 -msgid "Resource type" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/about/index.html:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/about/index.html:36 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/about/index.html:52 +msgid "Opens in new tab" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:182 -msgid "Access status" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:4 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:4 +msgid "Community visibility" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:201 -msgid "Record title and creators" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:5 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:5 +msgid "The community is restricted to users with access." msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:205 -msgid "Creators and contributors" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/members/base.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/members/base.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/members/base.html:15 +msgid " members" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:244 -msgid "Additional titles" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/members/base.html:20 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/members/base.html:20 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/members/base.html:23 +msgid "Invitations" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:271 -msgid "Record citations" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/requests/index.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/requests/index.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/requests/index.html:10 +msgid " requests" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:282 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:283 -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:299 -msgid "Files" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:11 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:11 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/settings/base.html:16 +msgid " settings" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:324 -msgid "Additional record details" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/settings/base.html:24 +msgid "Profile" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:337 -msgid "Record details" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:20 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:20 +msgid "Privileges" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:350 -msgid "Upload information" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:21 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:21 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/settings/base.html:26 +msgid "Review policy" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:353 -msgid "Created" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/details/settings/base.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/imprint.html:17 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/journal.html:18 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/imprint.html:17 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/journal.html:18 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:58 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:52 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:57 +msgid "Pages" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:359 -msgid "Modified" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/templates/semantic-ui/invenio_communities/macros/communities_carousel.html:11 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/templates/semantic-ui/invenio_communities/macros/communities_carousel.html:11 +msgid "Featured communities" msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:376 -msgid "Jump to top of page" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/views/communities.py:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/views/communities.py:34 +msgid "Your community is publicly accessible and shows up in search results." msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/records/detail.html:378 -msgid "Jump up" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/views/communities.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/views/communities.py:41 +msgid "Your community is restricted to users with access." msgstr "" -#: /Users/ianscott/Development/kcworks/site/kcworks/templates/semantic-ui/kcworks/view_templates/admin_login.html:38 -msgid "Or" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/views/communities.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/views/communities.py:51 +msgid "" +"Members who have set their visibility to public are visible to anyone. " +"Members with hidden visibility are only visible to other members." msgstr "" -#: /Users/ianscott/Development/kcworks/templates/ai_usage.html:7 -msgid "Usage Description" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/views/communities.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/views/communities.py:60 +msgid "" +"Members in your community are only visible to other members of the " +"community." msgstr "" -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header.html:43 -msgid "Menu" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/views/communities.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/views/communities.py:72 +msgid "All submissions to the community must be reviewed." msgstr "" -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header.html:61 -msgid "Close menu" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/build/lib/invenio_communities/views/communities.py:79 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-communities/invenio_communities/views/communities.py:79 +msgid "" +"Submissions to the community by default requires review, but curators, " +"managers and owners can publish directly without review." msgstr "" -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header.html:119 -msgid "Requests" +#. NOTE: This is a note to a translator. +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/build/lib/invenio_modular_deposit_form/ext.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/invenio_modular_deposit_form/ext.py:39 +msgid "A translation string" msgstr "" -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header.html:121 -msgid "Inbox" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/build/lib/invenio_modular_deposit_form/views.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/invenio_modular_deposit_form/views.py:30 +msgid "Invenio Modular Deposit Form" msgstr "" -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header_login.html:17 -msgid "Log in" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/invenio_modular_deposit_form/templates/invenio_modular_deposit_form/deposit.html:18 +msgid "New version" msgstr "" -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header_login.html:23 -msgid "Sign up" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-modular-deposit-form/invenio_modular_deposit_form/templates/invenio_modular_deposit_form/deposit.html:22 +msgid "Edit upload" msgstr "" -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header_login.html:33 -msgid "Quick create" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:56 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:56 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:99 +msgid "ORCID" msgstr "" -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header_login.html:46 -msgid "Actions" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:63 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:63 +msgid "ARK" msgstr "" -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header_login.html:66 -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header_login.html:107 -msgid "My account" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:64 +msgid "arXiv" msgstr "" -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header_login.html:101 -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header_login.html:130 -#: /Users/ianscott/Development/kcworks/templates/semantic-ui/invenio_app_rdm/header_login.html:142 -msgid "Log out" +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:66 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:66 +msgid "Bibcode" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:71 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:71 +msgid "Crossref Funder ID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:76 +msgid "EAN13" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:77 +msgid "EISSN" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:129 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:133 +msgid "Handle" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:84 +msgid "IGSN" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:83 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/imprint.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:83 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/imprint.html:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:134 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:42 +msgid "ISBN" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:87 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/journal.html:23 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:87 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/journal.html:23 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:144 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:75 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:148 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:67 +msgid "ISSN" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:88 +msgid "ISTC" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:89 +msgid "LISSN" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:90 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:90 +msgid "LSID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:91 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:91 +msgid "PMID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:92 +msgid "PURL" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:93 +msgid "UPC" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:149 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/config.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:153 +msgid "URL" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:95 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:95 +msgid "URN" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:96 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:96 +msgid "W3ID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:97 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:97 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:154 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:158 +msgid "Other" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:102 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:102 +msgid "Wikidata" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:103 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:103 +msgid "GeoNames" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:109 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:149 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:304 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:109 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:149 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:304 +msgid "Set name" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:74 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:114 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:150 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:308 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:74 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:114 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:150 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:308 +msgid "Set spec" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:152 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:312 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/config.py:55 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:152 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:312 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/config.py:55 +msgid "Created" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:153 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/config.py:316 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/config.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:153 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/config.py:316 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/config.py:59 +msgid "Updated" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/utils.py:117 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/utils.py:117 +msgid "Your shared link has expired." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:28 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:28 +msgid "OAI-PMH Sets" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:29 +msgid "Site management" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:122 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:151 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:122 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:151 +msgid "Search query" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:62 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:62 +msgid "Edit OAI-PMH set" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:145 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:145 +msgid "OAI-PMH" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:110 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:110 +msgid "A short human-readable string naming the set." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:116 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:116 +msgid "" +"An identifier for the set, which cannot be edited after the set is " +"created." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:124 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:124 +msgid "" +"See the supported query syntax in the Search " +"Guide." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:102 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:102 +msgid "Create OAI-PMH set" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/administration/views/oai.py:139 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/administration/views/oai.py:139 +msgid "OAI-PMH Details" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:44 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:44 +msgid "You must provide a valid URL." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/codemeta_fields.py:5 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/codemeta_fields.py:23 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/codemeta_fields.py:14 +msgid "Software" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:61 +msgid "Repository URL" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:63 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:63 +msgid "URL or link where the code repository is hosted." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:111 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:111 +msgid "Programming language" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:72 +msgid "Repository's programming language." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:73 +msgid "e.g. Python ..." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:85 +msgid "Development Status" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:86 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:86 +msgid "Repository status" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:88 +msgid "Repository current status." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/codemeta/custom_fields.py:101 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/codemeta/custom_fields.py:101 +msgid "Development status" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:35 +msgid "Please provide a valid ISBN." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:5 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:13 +msgid "Book / Report / Chapter" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:76 +msgid "Imprint (Book, Chapter, or Report)" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:78 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:103 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/imprint.html:7 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:78 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:103 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/imprint.html:7 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:24 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:32 +msgid "Place" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:79 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:79 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:25 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:41 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:33 +msgid "e.g. city, country" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:80 +msgid "Place where the book or report was published" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:43 +msgid "e.g. 0-06-251587-X" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:52 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:44 +msgid "International Standard Book Number" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:88 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:88 +msgid "Book or report title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:91 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:91 +msgid "Title of the book or report which this upload is part of" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:95 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:95 +msgid "Pagination" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/imprint/custom_fields.py:96 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/imprint/custom_fields.py:96 +msgid "e.g. 15-23 or 158" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:38 +msgid "Please provide a valid ISSN." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:19 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:18 +msgid "Journal" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:85 +msgid "Title of the journal in which the article was published" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/journal.html:8 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/journal.html:8 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_series_field.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_volumes_fields.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:45 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_series_field.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_volumes_fields.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/volumes.html:7 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_series_field.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_volumes_fields.py:57 +msgid "Volume" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:90 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:90 +msgid "e.g. 645" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/journal.html:13 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/journal.html:13 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:48 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:55 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:47 +msgid "Issue" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:95 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:95 +msgid "e.g. 7" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:99 +msgid "Page range or article number" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:100 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:100 +msgid "e.g. 15-23 or A29" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:105 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:105 +msgid "e.g. 2077-9550" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/custom_fields.py:106 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/custom_fields.py:106 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:69 +msgid "International Standard Serial Number" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/journal/sort.py:14 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/journal/sort.py:14 +msgid "Journal [Newest]" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:23 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:22 +msgid "Conference" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:9 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:9 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:39 +msgid "Acronym" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:98 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:14 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:98 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:14 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:48 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:49 +msgid "Dates" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:50 +msgid "e.g. 21-22 November 2022." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:105 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:105 +msgid "Location where the conference took place." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:108 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:24 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:108 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:24 +msgid "Website" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:83 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:81 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:82 +msgid "Session" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:114 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:114 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:82 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:83 +msgid "e.g. VI" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:115 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:115 +msgid "Session within the conference." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:118 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:118 +msgid "Part" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:119 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:119 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:93 +msgid "e.g. 1" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/custom_fields.py:120 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/custom_fields.py:120 +msgid "Part within the session." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/meeting/sort.py:14 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/meeting/sort.py:14 +msgid "Conference session [Newest]" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/thesis/custom_fields.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/thesis/custom_fields.py:32 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/thesis/custom_fields.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/thesis/custom_fields.py:32 +msgid "Thesis" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/contrib/thesis/custom_fields.py:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/contrib/thesis/custom_fields.py:35 +msgid "Awarding university" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/config.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/config.py:36 +msgid "Ascending" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/config.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/config.py:40 +msgid "Descending" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/config.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/config.py:51 +msgid "Spec" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/errors.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/errors.py:30 +#, python-brace-format +msgid "A set where {query_arguments} does not exist." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/errors.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/errors.py:43 +#, python-brace-format +msgid "A set with id {id} does not exist." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/errors.py:53 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/errors.py:53 +#, python-brace-format +msgid "A set with spec '{spec}' already exists." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/errors.py:63 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/errors.py:63 +#, python-brace-format +msgid "The set with id {id} is not editable." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/schema.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/schema.py:30 +msgid "Search pattern" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/services.py:81 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/services.py:81 +#, python-brace-format +msgid "The spec must not start with any of the following list '{prefix}'." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/oaiserver/services/services.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/oaiserver/services/services.py:93 +#, python-brace-format +msgid "The spec must only consist of letters, numbers or {marks}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/records/systemfields/draft_status.py:83 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/records/systemfields/draft_status.py:83 +#, python-brace-format +msgid "Unknown draft status for review: {reviewstatus}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/records/systemfields/draft_status.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/records/systemfields/draft_status.py:89 +msgid "Unknown draft status." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/community_inclusion.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/community_inclusion.py:99 +msgid "Community inclusion" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/community_submission.py:179 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/community_submission.py:179 +msgid "Community submission" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/community_transfer.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/community_transfer.py:26 +msgid "Community transfer" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/access/requests.py:189 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/access/requests.py:189 +#, python-format +msgid "Click here to access the record." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/access/requests.py:249 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/access/requests.py:281 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/access/requests.py:249 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/access/requests.py:281 +msgid "Access request" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/access/requests.py:318 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/requests/access/requests.py:323 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/access/requests.py:318 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/requests/access/requests.py:323 +msgid "Not a valid number of days." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:199 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:199 +msgid "Citation string style not found." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:205 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:205 +msgid "Review for draft not found" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:243 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:276 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:318 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:243 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:276 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:318 +msgid "Record not found" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:247 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:280 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:322 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:247 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:280 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:322 +msgid "Record deleted" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:255 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:255 +msgid "Cannot publish without selecting a community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:357 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:357 +msgid "No secret link found with the given ID." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:365 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:365 +msgid "No grant found with the given ID." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:378 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:378 +msgid "No grant found by given user id." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/config.py:385 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/config.py:385 +msgid "No grant found by given group id." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/iiif.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/iiif.py:99 +msgid "Image size limit exceeded" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/iiif.py:106 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/iiif.py:106 +msgid "" +"The record associated with this file has been deleted. See deletion " +"notice." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/deserializers/rocrate/__init__.py:31 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/deserializers/rocrate/__init__.py:31 +msgid "Invalid RO-Crate metadata format, missing '@graph' key." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/deserializers/rocrate/schema.py:32 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:365 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/deserializers/rocrate/schema.py:32 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:365 +msgid "Missing data for required field." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/deserializers/rocrate/schema.py:102 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/deserializers/rocrate/schema.py:102 +msgid "'@type' must be 'Person' or 'Organization'" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/deserializers/rocrate/schema.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/deserializers/rocrate/schema.py:138 +msgid "Format must be a list of strings." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/utils.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/utils.py:37 +#, python-format +msgid "The '%(vocabulary)s' vocabulary item '%(id_)s' was not found." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/cff/schema.py:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/cff/schema.py:29 +msgid "One of 'family-names' or 'given-names' is required." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/datacite/schema.py:281 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/datacite/schema.py:281 +msgid "Invalid publication date value." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/iiif/schema.py:167 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/iiif/schema.py:167 +msgid "Current Page Order" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/iiif/schema.py:194 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/iiif/schema.py:194 +msgid "Manifest generated by InvenioRDM" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/iiif/schema.py:213 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/iiif/schema.py:213 +msgid "Publication Date" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/schemaorg/schema.py:122 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/schemaorg/schema.py:122 +msgid "Affiliation failed to serialize: one of 'id' or 'name' must be provided." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/schemaorg/schema.py:363 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/schemaorg/schema.py:363 +msgid "" +"Funding serialization failed on award: one of 'id' or ('number' and " +"'title') are required." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:33 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:33 +msgid "Embargoed" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:35 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:35 +msgid "Metadata-only" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:65 +msgid "The record and files are publicly accessible." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:67 +msgid "No files are available for this record." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:76 +#, python-format +msgid "The record and files will be made publicly available on %(date)s." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:81 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:81 +msgid "The record and files are restricted to users with access." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:90 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:90 +#, python-format +msgid "The record will be made publicly available on %(date)s." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:94 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:94 +msgid "The record is restricted to users with access." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:102 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:102 +#, python-format +msgid "The files will be made publicly available on %(date)s." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/resources/serializers/ui/fields.py:106 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/resources/serializers/ui/fields.py:106 +msgid "" +"The record is publicly accessible, but files are restricted to users with" +" access." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:21 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:21 +msgid "Grant for this user/role already exists within this record." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:53 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:53 +#, python-format +msgid "Embargo could not be lifted for record: %(record_id)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:65 +msgid "Review not found." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:83 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:83 +msgid "The record is already included in this community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:93 +msgid "A public record cannot be included in a restricted community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:106 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:106 +msgid "There is already an open inclusion request for this community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:162 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:162 +#, python-format +msgid "The record %(rec_id)s in not included in the community %(com_id)s." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:178 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:178 +#, python-format +msgid "Cannot modify community visibility: %(reason)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:197 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:197 +#, python-format +msgid "Identical access requests already exist: %(request_id)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:201 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:201 +msgid "The access request is a duplicate" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:207 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:207 +msgid "Cannot publish without a community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/errors.py:213 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/errors.py:213 +msgid "A record should be part of at least 1 community." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:30 +msgid "Access status" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:43 +msgid "Published" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:43 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:43 +msgid "Unpublished" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:49 +msgid "File type" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:56 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:56 +msgid "Languages" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/facets.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/facets.py:65 +msgid "Resource types" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/services.py:635 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/services.py:634 +msgid "" +"Record visibility can not be changed to restricted anymore. Please " +"contact support if you still need to make these changes." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:128 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:162 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:128 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:162 +msgid "Expiration date must be set to the future" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:156 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:156 +msgid "Cannot postpone expiration of links" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:183 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:183 +msgid "An access permission level is required" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:198 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:198 +msgid "Invalid access permission level." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:408 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:513 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:938 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:408 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:513 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:938 +msgid "Could not find the specified subject." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/access/service.py:733 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/access/service.py:733 +msgid "Verification link sent out, please check your e-mail inbox" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/communities/components.py:53 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/communities/components.py:53 +msgid "Cannot restrict a community with public records." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/communities/service.py:179 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/communities/service.py:179 +msgid "Community not found." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/communities/service.py:449 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/communities/service.py:449 +msgid "Community already included." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/community_inclusion/service.py:46 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/community_inclusion/service.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/community_inclusion/service.py:46 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/community_inclusion/service.py:60 +msgid "Invalid request type." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/community_records/service.py:131 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/community_records/service.py:131 +msgid "The record does not exist." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/community_records/service.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/community_records/service.py:138 +msgid "Permission denied." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/components/access.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/components/access.py:39 +msgid "You don't have permissions to manage record access." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/components/review.py:38 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/components/review.py:38 +msgid "" +"You cannot delete a draft with an open review. Please cancel the review " +"first." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/github/metadata.py:58 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/github/metadata.py:58 +msgid "No description provided." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/github/metadata.py:167 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/github/metadata.py:167 +msgid "Citation schema is needed to load citation metadata." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/errors.py:23 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/errors.py:23 +#, python-brace-format +msgid "No configuration defined for PIDs {schemes}" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/errors.py:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/errors.py:34 +#, python-format +msgid "Unknown PID provider %(provider)s for %(scheme)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/manager.py:87 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/manager.py:87 +#, python-brace-format +msgid "Invalid {scheme}" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/manager.py:166 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/manager.py:166 +#, python-brace-format +msgid "A PID already exists for type {scheme}" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/manager.py:173 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/manager.py:173 +msgid "External identifier value is required." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/manager.py:211 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/manager.py:241 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/manager.py:211 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/manager.py:241 +#, python-brace-format +msgid "PID not found for type {scheme}" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/manager.py:268 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/manager.py:268 +msgid "Cannot discard a reserved or registered persistent identifier." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/providers/base.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/providers/base.py:85 +msgid "You must provide a pid value." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/providers/base.py:176 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/providers/base.py:176 +#, python-brace-format +msgid "{pid_type}:{identifier} already exists." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/providers/datacite.py:281 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/providers/datacite.py:281 +msgid "Missing publisher field required for DOI registration." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/providers/external.py:45 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/providers/external.py:45 +#, python-brace-format +msgid "" +"The prefix '{prefix}' is managed by {sitename}. Please supply an external" +" DOI or select 'No' to have a DOI generated for you." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/pids/providers/external.py:91 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/pids/providers/external.py:91 +#, python-brace-format +msgid "Missing {scheme} for required field." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/review/service.py:52 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/review/service.py:52 +msgid "Invalid review type." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/review/service.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/review/service.py:59 +msgid "A review already exists for this record" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/review/service.py:63 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/review/service.py:63 +msgid "You cannot create a review for an already published record." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/review/service.py:132 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/review/service.py:132 +msgid "You cannot delete a review for a draft that has already been published." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/review/service.py:138 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/review/service.py:138 +msgid "An open review cannot be deleted." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/review/service.py:157 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/review/service.py:157 +msgid "Must be a boolean, true or false" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/access.py:39 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/access.py:39 +msgid "Embargo end date must be set to a future date." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/access.py:48 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/access.py:48 +msgid "Embargo end date must be unset or in the past." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/access.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/access.py:65 +#, python-brace-format +msgid "'{field_name}' must be either 'public' or 'restricted'" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/community_records.py:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/community_records.py:34 +#, python-brace-format +msgid "Too many records passed, {max_number} max allowed." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/community_records.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/community_records.py:51 +#, python-brace-format +msgid "Duplicated records {rec_ids}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:75 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:75 +msgid "Only one value is accepted." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:77 +msgid "Not a valid locale." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:93 +#, python-brace-format +msgid "Invalid value. Choose one of {NAMES}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:116 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:116 +msgid "Family name cannot be blank." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:121 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:121 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/schema.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/schema.py:44 +msgid "Name cannot be blank." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:157 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:157 +msgid "Duplicated affiliations: " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:216 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:228 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:216 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:228 +msgid "Not a valid URL." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:248 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:248 +msgid "An existing id or a free text title must be present" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:254 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:254 +msgid "" +"Only an existing id or free text title/description/link is accepted, but " +"not both cases at the same time" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:344 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:344 +msgid "" +"At least one of ['geometry', 'place', identifiers', " +"'description'] must be present." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:368 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:368 +msgid "Title cannot be a blank string." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:385 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:385 +msgid "Size cannot be a blank string." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/metadata.py:388 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/metadata.py:388 +msgid "Format cannot be a blank string." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/record.py:36 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/record.py:36 +msgid "Invalid persistent identifier scheme." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/record_communities.py:37 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/record_communities.py:37 +#, python-brace-format +msgid "Too many communities passed, {max_number} max allowed." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/record_communities.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/record_communities.py:54 +#, python-brace-format +msgid "Duplicated communities {com_ids}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/services/schemas/parent/__init__.py:28 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/services/schemas/parent/__init__.py:28 +#, python-brace-format +msgid "Invalid persistent identifier scheme {scheme}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/imprint.html:2 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/imprint.html:2 +msgid "Publisher" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/templates/semantic-ui/meeting.html:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/templates/semantic-ui/meeting.html:34 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:93 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:91 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:92 +msgid "Session part" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:23 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:23 +msgid "" +"Missing \"kid\" key with personal access token ID in JWT header of " +"resource access token." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:32 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:32 +msgid "" +"\"kid\" JWT header value of resource access token not a valid personal " +"access token ID." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:40 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:40 +msgid "Failed to decode resource access token." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:46 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:46 +msgid "The resource access token is invalid." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:52 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:52 +msgid "The resource access token subject is invalid." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:58 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:58 +msgid "The resource access token is expired." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/errors.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/errors.py:64 +msgid "Resource Access Tokens feature is currently disabled." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/build/lib/invenio_rdm_records/tokens/scopes.py:16 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-rdm-records/invenio_rdm_records/tokens/scopes.py:16 +msgid "Allow generation of granular access JWT tokens." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/custom_fields.py:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-remote-api-provisioner/tests/conftest.py:179 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/custom_fields.py:122 +msgid "Commons search update info" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:99 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:103 +msgid "Knowledge Commons Username" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:104 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:108 +msgid "Humanities Commons Username" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/identifiers.py:124 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:128 +msgid "DataCite DOI" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/hclegacy_metadata_fields.py:248 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/hclegacy_metadata_fields.py:242 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/hclegacy_metadata_fields.py:244 +msgid "Commons legacy info" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:12 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:28 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:20 +msgid "Book title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:15 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:31 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:23 +msgid "Title of the book or report which this upload is part of." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/imprint_fields.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/imprint_fields.py:42 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/imprint_fields.py:34 +msgid "Place where the imprint was published" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/journal_fields.py:26 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/journal_fields.py:33 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/journal_fields.py:25 +msgid "Journal Title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_ai_field.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_ai_field.py:62 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_ai_field.py:61 +msgid "Was AI Used" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_ai_field.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_ai_field.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_ai_field.py:64 +msgid "Did generative AI contribute to the production of this work?" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_ai_field.py:66 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_ai_field.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_ai_field.py:66 +msgid "Yes" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_ai_field.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_ai_field.py:68 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_ai_field.py:67 +msgid "No" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_ai_field.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_ai_field.py:71 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_ai_field.py:70 +msgid "Description of use" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_media_field.py:20 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_media_field.py:18 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_media_field.py:18 +msgid "Media" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_media_field.py:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_media_field.py:25 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_media_field.py:25 +msgid "Media and materials" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_media_field.py:29 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_media_field.py:27 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_media_field.py:27 +msgid "Enter each of the materials used here (press 'enter' to add each one)" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:103 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:118 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:101 +msgid "Department" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:111 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:126 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:109 +msgid "Chapter" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:121 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:136 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:119 +msgid "Degree" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:131 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:146 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:129 +msgid "Discipline" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:141 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:156 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:139 +msgid "Edition" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:151 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:166 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:149 +msgid "Commons domain" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:162 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:178 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:161 +msgid "Course title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:219 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:235 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:218 +msgid "Meeting organization" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:230 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:245 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:228 +msgid "Sponsoring institution" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:251 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:268 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:251 +msgid "Commons admin info" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_metadata_fields.py:282 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_metadata_fields.py:299 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_metadata_fields.py:282 +msgid "Course" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:65 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:75 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/notes.html:11 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:60 +msgid "Notes" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/notes.html:7 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/notes.html:14 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:62 +msgid "Description" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:80 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:65 +msgid "A few words describing the kind of notes recorded here." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:75 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:84 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:69 +msgid "Note" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:85 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:70 +msgid "Type your note content here" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_notes_fields.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_notes_fields.py:86 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_notes_fields.py:71 +msgid "The text of your note" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_series_field.py:54 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_series_field.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_series_field.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_series_field.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/book_series_field.html:1 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_series_field.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_series_field.py:57 +msgid "Series" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_series_field.py:63 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_series_field.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/book_series_field.html:4 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_series_field.py:59 +msgid "Series Title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_user_tags_fields.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_user_tags_fields.py:76 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_user_tags_fields.py:55 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_user_tags_fields.py:62 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_user_tags_fields.py:55 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_user_tags_fields.py:62 +msgid "Tags" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_user_tags_fields.py:78 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_user_tags_fields.py:64 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_user_tags_fields.py:64 +msgid "Type your keywords here (press 'enter' to add each one)" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_volumes_fields.py:57 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_volumes_fields.py:49 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_volumes_fields.py:49 +msgid "Volumes" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/kcr_volumes_fields.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/kcr_volumes_fields.py:51 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/volumes.html:2 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/kcr_volumes_fields.py:51 +msgid "Total volumes" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:30 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:28 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:29 +msgid "Event title" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:59 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:60 +msgid "Location" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-record-importer-kcworks/tests/fixtures/metadata_fields/meeting_fields.py:72 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/metadata_fields/meeting_fields.py:70 +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/metadata_fields/meeting_fields.py:71 +msgid "Event URL" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/resources/errors.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/resources/errors.py:61 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/resources/errors.py:60 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/resources/errors.py:61 +msgid "Invalid query string syntax." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/resources/errors.py:62 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/resources/errors.py:62 +msgid "Misconfigured search." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/resources/errors.py:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/resources/errors.py:73 +msgid "Internal server error" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/errors.py:69 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/errors.py:69 +#, python-brace-format +msgid "Facet {vocab} not found." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/errors.py:78 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/errors.py:78 +#, python-brace-format +msgid "Record '{recid}' has no file '{file_key}'." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/errors.py:92 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/errors.py:92 +#, python-brace-format +msgid "Record '{recid}' failed to upload file '{file_key}'." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/errors.py:108 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/errors.py:108 +#, python-brace-format +msgid "" +"Uploading the selected files would result in {files_count} files (max is " +"{max_files})." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/files/transfer.py:77 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/files/transfer.py:77 +msgid "File size limit exceeded." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/files/transfer.py:103 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/files/transfer.py:103 +msgid "Empty files are not accepted." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/records/components/files.py:89 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/records/components/files.py:89 +msgid "You must first delete all files to set the record to be metadata-only." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/build/lib/invenio_records_resources/services/records/queryparser/transformer.py:67 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-records-resources/invenio_records_resources/services/records/queryparser/transformer.py:67 +#, python-brace-format +msgid "Invalid search field: {field_name}." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/config.py:49 +msgid "Funders" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/datastreams.py:117 +#, python-brace-format +msgid "Unknown OpenAIRE funder prefix {openaire_funder_prefix}" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/datastreams.py:158 +#, python-brace-format +msgid "Missing title attribute for award {award_id}" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/schema.py:41 +msgid "Number cannot be blank." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/schema.py:50 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/schema.py:60 +msgid "PID cannot be blank." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/schema.py:80 +msgid "An existing id or number/title must be present." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/awards/schema.py:97 +msgid "At least award or funder should be present." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/datastreams.py:46 +msgid "Id not found in ROR entry." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/datastreams.py:79 +msgid "Name with type ror_display not found in ROR entry." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/funders/schema.py:73 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/schema.py:111 +msgid "Missing PID." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/names/schema.py:54 +msgid "A name or the family name together with the given name must be present." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/contrib/names/schema.py:68 +msgid "Duplicated affiliations." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/components.py:29 +msgid "The vocabulary type does not exists." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/services/schema.py:79 +#, python-brace-format +msgid "An existing id or a free text {ftf_name} must be present." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/dependencies/invenio-vocabularies/invenio_vocabularies/templates/semantic-ui/invenio_vocabularies/subjects.html:16 +msgid "Search results for " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_default_viewer/default_viewer.html:27 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_docx_viewer/docx_viewer.html:25 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_latex_viewer/latex_viewer.html:25 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pptx_viewer/pptx_viewer.html:25 +msgid "Cannot preview file" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_default_viewer/default_viewer.html:28 +msgid "Sorry, we cannot currently preview this kind of file" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_docx_viewer/docx_viewer.html:26 +msgid "Sorry, we cannot currently preview MS Word file formats (.docx, .doc)." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_latex_viewer/latex_viewer.html:26 +msgid "Sorry, we cannot currently preview LaTeX file formats (.tex, .bib)." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:40 +msgid "Thumbnails" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:49 +msgid "Document Outline" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:64 +msgid "Find:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:75 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:249 +msgid "Previous" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:85 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:259 +msgid "Next" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:94 +msgid "Highlight all" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:102 +msgid "Match case" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:113 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:284 +msgid "Switch to Full Screen Mode" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:116 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:287 +msgid "Full Screen Mode" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:122 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:126 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:293 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:297 +msgid "Print" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:144 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:148 +msgid "Go to First Page" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:153 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:157 +msgid "Go to Last Page" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:165 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:170 +msgid "Rotate Clockwise" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:176 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:181 +msgid "Rotate Counterclockwise" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:195 +msgid "Enable hand tool" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:204 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:209 +msgid "Document Properties" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:223 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:228 +msgid "Toggle Sidebar" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:235 +msgid "Find in Document" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:239 +msgid "Find" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:244 +msgid "Previous Page" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:254 +msgid "Next Page" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:267 +msgid "Page:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:315 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:319 +msgid "Tools" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:328 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:332 +msgid "Zoom Out" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:338 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:342 +msgid "Zoom In" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:348 +msgid "Zoom" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:358 +msgid "Automatic Zoom" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:365 +msgid "Actual Size" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:372 +msgid "Fit Page" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:379 +msgid "Full Width" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:404 +msgid "First Page" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:432 +msgid "More Information" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:435 +msgid "Less Information" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:440 +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:547 +msgid "Close" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:454 +msgid "Enter the password to open this PDF file:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:463 +msgid "Cancel" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:466 +msgid "OK" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:475 +msgid "File name:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:481 +msgid "File size:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:487 +msgid "Title:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:492 +msgid "Author:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:498 +msgid "Subject:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:504 +msgid "Keywords:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:510 +msgid "Creation Date:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:516 +msgid "Modification Date:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:522 +msgid "Creator:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:529 +msgid "PDF Producer:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:535 +msgid "PDF Version:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:541 +msgid "Page Count:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pdf_viewer/pdfjs.html:559 +msgid "Preparing document for printing..." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/custom_previewers/invenio_custom_pptx_viewer/pptx_viewer.html:26 +msgid "Sorry, we cannot currently preview PowerPoint file formats (.pptx, .ppt)." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/notes.html:2 +msgid "Note text" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/view_templates/admin_login.html:30 +#, python-format +msgid "Sign in with %(title)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/site/kcworks/templates/semantic-ui/kcworks/view_templates/admin_login.html:39 +msgid "Or" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/ai_usage.html:16 +msgid "AI Used" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/ai_usage.html:21 +msgid "Usage Description" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/security/email/welcome.html:10 +#, python-format +msgid "Welcome %(email)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/security/email/welcome.html:21 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/security/email/welcome.html:10 +msgid "You can confirm your email through the link below:" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/security/email/welcome.html:23 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/security/email/welcome.html:12 +msgid "Confirm my account" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/footer.html:41 +#, python-format +msgid "" +"\n" +" %(link_text)s\n" +" " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_frontpage.html:57 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:65 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:66 +msgid "Add a work" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:16 +msgid "Log in" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:22 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_saml/login_user.html:47 +msgid "Sign up" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:59 +msgid "Quick create" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:77 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:118 +msgid "My account" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:112 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:141 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:156 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/header_login.html:157 +msgid "Log out" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:11 +msgid "You've successfully installed InvenioRDM!" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:13 +msgid "What is ahead?" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:23 +msgid "Configure" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:26 +#, python-format +msgid "" +"\n" +" Configure the datamodel, resource types, permissions and much" +" more to make it suit your needs! For more\n" +" information on how to do it visit the configuration\n" +" section in the docs.\n" +" " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:41 +msgid "Customize" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:44 +#, python-format +msgid "" +"\n" +" Customize the layout and adapt the styling to match your " +"institution's. See how to do so here.\n" +" " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:57 +msgid "Run it!" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:59 +#, python-format +msgid "" +"\n" +" Run " +"your\n" +" InvenioRDM instance locally or in containers.\n" +" " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:77 +msgid "Docs" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:86 +msgid "Code" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:93 +msgid "To disable this section, add" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/intro_section.html:95 +msgid "to your invenio.cfg file." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/site_footer.html:7 +#, python-format +msgid "" +"\n" +" Powered by\n" +" InvenioRDM\n" +" " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/site_footer.html:19 +#, python-format +msgid "" +"\n" +" Support the Commons\n" +" " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/records/search.html:25 +msgid "In this community" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/records/search.html:30 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/records/search.html:38 +msgid "All" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/records/search.html:62 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/records/search.html:63 +msgid "Search works" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/users/communities.html:13 +msgid "My Collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/users/header.html:29 +msgid "My dashboard" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/users/header.html:30 +msgid "Anonymous user" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/users/requests.html:13 +msgid "My Inbox" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_app_rdm/users/uploads.html:13 +msgid "My Uploads" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:23 +msgid "Works Collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:36 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:37 +msgid "Search collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:53 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:55 +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/search.html:30 +msgid "New collection" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:54 +msgid "New" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:63 +msgid "My collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:72 +msgid "New collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:80 +msgid "Commons Collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:88 +msgid "Journals" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:96 +msgid "Organization collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:106 +msgid "Topic collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/frontpage.html:114 +msgid "Event collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/new.html:15 +msgid "New Collection" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/search.html:15 +msgid "Search Collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/search.html:25 +msgid "Collections Search" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/tombstone.html:32 +#, python-format +msgid "" +"\n" +" The collection you are trying to access was removed from " +"%(sitename)s. The\n" +" metadata of the collection is kept for archival purposes." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/curation_policy/index.html:16 +msgid "Curation Policy" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:17 +msgid "Collection visibility" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/macros/access-status-label.html:18 +msgid "The collection is restricted to users with access." +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/details/settings/base.html:27 +msgid "About and Curation" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/macros/communities_carousel.html:14 +msgid "Featured collections" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_communities/records/index.html:12 +msgid "Search " +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_previewer/csv_bar.html:24 +msgid "Show more" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_saml/login_user.html:24 +msgid "Log in with your account from" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_saml/login_user.html:38 +#, python-format +msgid "%(title)s" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/invenio_saml/login_user.html:47 +msgid "Not yet a member?" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/templates/semantic-ui/security/email/welcome.html:8 +#, python-format +msgid "Welcome %(email)s!" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:163 +msgid "Import Record ID" +msgstr "" + +#: /Users/ianscott/Development/knowledge-commons-works/tests/fixtures/identifiers.py:168 +msgid "NEH Record ID" msgstr "" diff --git a/uv.lock b/uv.lock new file mode 100644 index 000000000..ce322826d --- /dev/null +++ b/uv.lock @@ -0,0 +1,6007 @@ +version = 1 +requires-python = ">=3.12" + +[[package]] +name = "aiobotocore" +version = "2.21.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "aioitertools" }, + { name = "botocore" }, + { name = "jmespath" }, + { name = "multidict" }, + { name = "python-dateutil" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d2/dc/f5f872fb01ce37c09525cedc7ecfad7002ffe2a8a23f77d7d2c234399b51/aiobotocore-2.21.1.tar.gz", hash = "sha256:010357f43004413e92a9d066bb0db1f241aeb29ffed306e9197061ffc94e6577", size = 108900 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/67/026598918f92145156f2feb7957f57daefda20375cc2ac1a0692a9b8010b/aiobotocore-2.21.1-py3-none-any.whl", hash = "sha256:bd7c49a6d6f8a3d9444b0a94417c8da13813b5c7eec1c4f0ec2db7e8ce8f23e7", size = 78313 }, +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265 }, +] + +[[package]] +name = "aiohttp" +version = "3.11.15" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohappyeyeballs" }, + { name = "aiosignal" }, + { name = "attrs" }, + { name = "frozenlist" }, + { name = "multidict" }, + { name = "propcache" }, + { name = "yarl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/18/31398875dc7b9815767370f60f44284155f2e1c1b87ec721c1b0ee61d1e5/aiohttp-3.11.15.tar.gz", hash = "sha256:b9b9a1e592ac8fcc4584baea240e41f77415e0de98932fdf19565aa3b6a02d0b", size = 7676625 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/9b/e3a30cfc8781af8f1175812a1a886f36b75c2ac92f1185ea48d1dc9ec2d3/aiohttp-3.11.15-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:433e7388b3063bba462b3362641988270b087a9ccae22390364f86b37a480c17", size = 704848 }, + { url = "https://files.pythonhosted.org/packages/ea/b2/abd592077b79638ddfe36681c45670278e9b4a070b3d958f58c46b6dad24/aiohttp-3.11.15-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d99981304065f4ea407dd7495f74f8b8c10f0e26733f8a47dc174ece73744d14", size = 464529 }, + { url = "https://files.pythonhosted.org/packages/c5/a1/85b0738f108806d3b1e1d83e8131cd7680c1266aad6f4d01737bee5cacc4/aiohttp-3.11.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3739daa52c0cff42f1c40f63b2fe818fcf41019d84c80a7add3224207a7060f", size = 456517 }, + { url = "https://files.pythonhosted.org/packages/c9/68/0460c66cafd826acd1bbd00e9fc9e1a7838ba56ca518540b1edccfd30cce/aiohttp-3.11.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fd82d0b3f73c59c80dade0ca8e0342de1ee261e147140ade65a465be670e83c", size = 1691717 }, + { url = "https://files.pythonhosted.org/packages/91/4b/f2d9c1d0a9e2c7faf080cfe4013b1ca637311fdf24b0023d1412f0cde0a1/aiohttp-3.11.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c930064b79cc0eb63678e376b819d546b0e2360264cd7544c32119496f646f35", size = 1736840 }, + { url = "https://files.pythonhosted.org/packages/c0/d0/9b989329a912806b58162064e914f943e61a99c8606c103ec5862b34ab24/aiohttp-3.11.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291f324f49ecede693dfb4820a412d1388cb10a2214ab60028252b505e105d6f", size = 1786852 }, + { url = "https://files.pythonhosted.org/packages/87/a8/e1294430720c67aa92039075fc87ff71485cb80acac948b74c1b7b3e6955/aiohttp-3.11.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65eb40e74e3126cba185da7a78815cf3a30140932193831b3bfd73c79965c723", size = 1698027 }, + { url = "https://files.pythonhosted.org/packages/ce/a8/35c7e118316cf27c8d42c5357b4893e31229117e69802da5d7874df2f690/aiohttp-3.11.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6d6d86443580f846ec9cf60f899b7cace34411f2ff5c95db5970047195e5bfa", size = 1626494 }, + { url = "https://files.pythonhosted.org/packages/48/0c/399e9aba5700591f2c1a9bdad24a4191d6aa497e6107852418c2c4254782/aiohttp-3.11.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8b4d8d78fbd5290204dcf43957a2184acd5cee358f203f24a3a97f7d7984eeb7", size = 1644005 }, + { url = "https://files.pythonhosted.org/packages/0e/48/f0c11b78775d5a6f07c721983229f365860090ff8d57f04a526decff30b6/aiohttp-3.11.15-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:94c552a4864ed292dadf1d341213374284a3af72e49bea02e70ce6f07cb37004", size = 1685236 }, + { url = "https://files.pythonhosted.org/packages/1c/4a/d3704524d11eab7c8f1b59a4b2c7b87129e3ac2cc8392b2072e5fd2ec277/aiohttp-3.11.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:23857adc919b64bba8a4db0eccb24e53fcaf85633e690ef1581c5562ed58cae7", size = 1650818 }, + { url = "https://files.pythonhosted.org/packages/65/87/12275b20f4a5f5016c114ff12ca6b77e423903bca082f55adf1e729d266f/aiohttp-3.11.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:eba325409a0f990f9b43ed18916cbf5b9779bc4c979b8887c444e7be9c38ccca", size = 1704447 }, + { url = "https://files.pythonhosted.org/packages/c9/99/a7709475303efac3fa929507ecdea1d7c9f9b49a14145eb0f382367f3997/aiohttp-3.11.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:f1b6c639750bf2a228957e25fcab7a7ff11987c543d70bf73223369f0d7bdb27", size = 1735337 }, + { url = "https://files.pythonhosted.org/packages/36/b4/5d45c7343a38ff6b463ac860b9fe266f6bdc1c9a6b41ba4659ad3ede4a39/aiohttp-3.11.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2241d862dc6a3c0c2662a6934e79078d3a1e51a76c0dca5d65b30f3debee6c9b", size = 1697586 }, + { url = "https://files.pythonhosted.org/packages/84/d9/61da0272c2b3a00ddbc3176d0eee268624f8dbd5c791f0be3a973ed0c851/aiohttp-3.11.15-cp312-cp312-win32.whl", hash = "sha256:18733fa6bbe44698ff96138c1f1d682bbdf0846250a42c25c108eed328fef0d4", size = 411667 }, + { url = "https://files.pythonhosted.org/packages/c7/ae/c37d218057f9d69ac0423f049f989bbb8dfbe5bcc2404579c9a1958bddae/aiohttp-3.11.15-cp312-cp312-win_amd64.whl", hash = "sha256:0ec98c22030ea2a430cb11afddda7d4737b7e5c236c704f0d7d15504978598f7", size = 437969 }, + { url = "https://files.pythonhosted.org/packages/3f/38/8324c180c8d90ff9afc724f5882e33d6ae6061db954b409dd0bd03bf767f/aiohttp-3.11.15-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:c37aa3eb8eb92f3793f0c1e73f212a76cbc8d363e9990df54b5b7099f75ce740", size = 697977 }, + { url = "https://files.pythonhosted.org/packages/5f/2b/fe647a80696877cb99bcd3324672e054112ed022dce201cdc1491bf16314/aiohttp-3.11.15-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5b5edd482ff0a8585b3f4e8b3681819447324166a43a5588800a5bca340dbf27", size = 461067 }, + { url = "https://files.pythonhosted.org/packages/63/d6/8b0b6ff2557df59125527bb87ec74344da940dfa4061f41a91857ff8c327/aiohttp-3.11.15-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d8c22c91bdb7417bd4f5119242dbd2e2140c0e9de47342c765f127f897eb57", size = 453367 }, + { url = "https://files.pythonhosted.org/packages/69/10/a9beb08734dfadf8e322efdb79a2b31098ec5b2f29bb7378533d3b4a145c/aiohttp-3.11.15-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b03093d4140d926965d23497a059ec59c8c07e602d2489ce5fb990f3a897db4", size = 1666611 }, + { url = "https://files.pythonhosted.org/packages/ca/ec/9a6724dd72a356298049913f4590b281fbe01386bc7d0e0c3cc6bff46af0/aiohttp-3.11.15-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05eea49d598c4ece6f285e00464de206f838b48ff21938d5aa9c394e115945b9", size = 1721916 }, + { url = "https://files.pythonhosted.org/packages/5a/61/dbcd2f2ff8f8282a56166b308dd9a1ca67ff844e05c20a7eade80f8fc99f/aiohttp-3.11.15-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63f8d6106566f98fcfde7a643c9da52d90679b8592dea76c4adfc3cd5d06d22c", size = 1774421 }, + { url = "https://files.pythonhosted.org/packages/4f/fe/fa6952f41486a18860804d685b978793bd4accd5dd2a5a49801ad76c16e2/aiohttp-3.11.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36a490f1ebe0b982366314c77f02258f87bd5d9bd362839dc6a24188447f37eb", size = 1677753 }, + { url = "https://files.pythonhosted.org/packages/4d/f4/e7ee9b27adae614dd30598cbbb64c6484fa475864392781da7bd3ab43871/aiohttp-3.11.15-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:73a7f6283634dd30f93b9a67c414c00517869478b50361c503535e075fa07eaf", size = 1608419 }, + { url = "https://files.pythonhosted.org/packages/30/c1/f0513cf705ea1e6366530f5b9f1683129e6f9a70e32ee0a730fcbf85f393/aiohttp-3.11.15-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0e97c1e55f6931f07ecaf53aef8352def8386adfd0cd3caa6429cc40e886d6a9", size = 1622394 }, + { url = "https://files.pythonhosted.org/packages/c9/b9/65c94e9578591b49ee4c7cf26131cd0c4e693f9173e78a9aba4f8c60d24d/aiohttp-3.11.15-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:d8370d31e6d8ecccd97cd791c466d0acb56527df51b0c105d7ea54c7fcc0f75b", size = 1660913 }, + { url = "https://files.pythonhosted.org/packages/65/28/bbeba6d8a30a42ba591f7feb333ff2a01ed1e2ee0b31bc7195354c2c605a/aiohttp-3.11.15-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:c2de66177e087999568638c02639cf0248011b5c7fca69b006947153c534fcab", size = 1622763 }, + { url = "https://files.pythonhosted.org/packages/d1/39/e123f8dde599ec42da17cf094cfacd343569617c9bce68fe257e627395a9/aiohttp-3.11.15-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:edcddb97574402ff7481bc6f70819ba863e77b0be58a840ed5f59d52d2f20a71", size = 1687127 }, + { url = "https://files.pythonhosted.org/packages/35/cf/1eaaae2dd6f0ea36926cdd0af131d11315a3a06d0a6d9bc79f6e8b11c090/aiohttp-3.11.15-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:29cce2a7e009494e675018c0b1819a133befbab8629c797276c5d793bbdf1138", size = 1718485 }, + { url = "https://files.pythonhosted.org/packages/80/09/1824997f72def3567f451130b7618beab65cf5e99d11611dae87b251de82/aiohttp-3.11.15-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:825ec92391e3e4ddda74de79ed0f8b443e9b412a0c9c82618ca2163abd875df5", size = 1675221 }, + { url = "https://files.pythonhosted.org/packages/56/2f/c1e86f6452a9abae346b31c48bfd476984baa3a73978ad3eabf53139c513/aiohttp-3.11.15-cp313-cp313-win32.whl", hash = "sha256:430f9707f0c1239a92bff7769b0db185ef400278dc63c89f88ed1bd5153aab7a", size = 410657 }, + { url = "https://files.pythonhosted.org/packages/ef/9e/9913ed27bb195224c3fc6a41f0b169d6d93e3843cd792d24013a112ffb3e/aiohttp-3.11.15-cp313-cp313-win_amd64.whl", hash = "sha256:f30e6980ec5d6ad815a233e19e39fe27ea94b1081c31c8aa1df1b629da3737b8", size = 436351 }, +] + +[[package]] +name = "aioitertools" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345 }, +] + +[[package]] +name = "aiosignal" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frozenlist" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", size = 19424 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597 }, +] + +[[package]] +name = "alabaster" +version = "0.7.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/3e/13dd8e5ed9094e734ac430b5d0eb4f2bb001708a8b7856cbf8e084e001ba/alabaster-0.7.16.tar.gz", hash = "sha256:75a8b99c28a5dad50dd7f8ccdd447a121ddb3892da9e53d1ca5cca3106d58d65", size = 23776 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/34/d4e1c02d3bee589efb5dfa17f88ea08bdb3e3eac12bc475462aec52ed223/alabaster-0.7.16-py3-none-any.whl", hash = "sha256:b46733c07dce03ae4e150330b975c75737fa60f0a7c591b6c8bf4928a28e2c92", size = 13511 }, +] + +[[package]] +name = "alembic" +version = "1.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mako" }, + { name = "sqlalchemy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/14/b3/e471678c278e5f9beb9cb9b6acc2cfbb5628545d9795a9e05627f87c7e7c/alembic-1.10.4.tar.gz", hash = "sha256:295b54bbb92c4008ab6a7dcd1e227e668416d6f84b98b3c4446a2bc6214a556b", size = 1152769 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/64/3d091f50da38aca0774e30053db2bd3483ba6358674a60d82fd6dd6248b6/alembic-1.10.4-py3-none-any.whl", hash = "sha256:43942c3d4bf2620c466b91c0f4fca136fe51ae972394a0cc8b90810d664e4f5c", size = 212877 }, +] + +[[package]] +name = "amqp" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "vine" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/fc/ec94a357dfc6683d8c86f8b4cfa5416a4c36b28052ec8260c77aca96a443/amqp-5.3.1.tar.gz", hash = "sha256:cddc00c725449522023bad949f70fff7b48f0b1ade74d170a6f10ab044739432", size = 129013 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/99/fc813cd978842c26c82534010ea849eee9ab3a13ea2b74e95cb9c99e747b/amqp-5.3.1-py3-none-any.whl", hash = "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2", size = 50944 }, +] + +[[package]] +name = "aniso8601" +version = "10.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/3f/dc8a28fa6dc72c13d8c158b01f8975f240e9e72c336cc1ae00f424e2d7ce/aniso8601-10.0.0.tar.gz", hash = "sha256:ff1d0fc2346688c62c0151547136ac30e322896ed8af316ef7602c47da9426cf", size = 47008 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/bf/d5cde2cb7cdc2cb1770d974418d169a79c3187bd962cb752b9fd617848ca/aniso8601-10.0.0-py2.py3-none-any.whl", hash = "sha256:3c943422efaa0229ebd2b0d7d223effb5e7c89e24d2267ebe76c61a2d8e290cb", size = 52767 }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, +] + +[[package]] +name = "appdirs" +version = "1.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40/appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", size = 13470 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128", size = 9566 }, +] + +[[package]] +name = "arrow" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "types-python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419 }, +] + +[[package]] +name = "asttokens" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, +] + +[[package]] +name = "async-timeout" +version = "5.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233 }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, +] + +[[package]] +name = "babel-edtf" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "edtf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f9/25/b2ca3f471b91d37f59ec4304b5f98bdb6001e174a431dda34cf98b2a217c/babel-edtf-1.2.1.tar.gz", hash = "sha256:1ed0c454e123ed7579510d9531eae5af4399272b0dff897d3d42f68e9bed8d8e", size = 18138 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/f5/10fe146e609bcae84bfd32384c3e7ed837cf038c1306a7a72b11eeb165cf/babel_edtf-1.2.1-py2.py3-none-any.whl", hash = "sha256:706529185b335f05ca4567c468f4ec307ad36fa9ce13b63671f1e113a57f7d55", size = 6452 }, +] + +[[package]] +name = "base32-lib" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/ed/0752d75107d2ec3bb6a2f023f54fa81039f1062b913709b843205aee47ba/base32-lib-1.0.2.tar.gz", hash = "sha256:09663df621bbc454079a54c92fa25d3bc33ea4a191053a09dd1e05ea4c0fe47c", size = 12969 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/c9/5a769cb6649f2fdf366e1c10db4cafd0e6c7f8b3575d6cb5917bb9298086/base32_lib-1.0.2-py2.py3-none-any.whl", hash = "sha256:f3cbc1c4b3df7af844c9b7ffc1638a688423db2b1e51082b2c014b3959b756ae", size = 6701 }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.13.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f0/3c/adaf39ce1fb4afdd21b611e3d530b183bb7759c9b673d60db0e347fd4439/beautifulsoup4-4.13.3.tar.gz", hash = "sha256:1bd32405dacc920b42b83ba01644747ed77456a65760e285fbc47633ceddaf8b", size = 619516 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/49/6abb616eb3cbab6a7cca303dc02fdf3836de2e0b834bf966a7f5271a34d8/beautifulsoup4-4.13.3-py3-none-any.whl", hash = "sha256:99045d7d3f08f91f0d656bc9b7efbae189426cd913d830294a15eefa0ea4df16", size = 186015 }, +] + +[[package]] +name = "bibtexparser" +version = "1.4.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/92/8d/e296c7af03757debd8fc80df2898cbed4fb69fc61ed2c9b4a1d42e923a9e/bibtexparser-1.4.3.tar.gz", hash = "sha256:a9c7ded64bc137720e4df0b1b7f12734edc1361185f1c9097048ff7c35af2b8f", size = 55582 } + +[[package]] +name = "billiard" +version = "4.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/58/1546c970afcd2a2428b1bfafecf2371d8951cc34b46701bea73f4280989e/billiard-4.2.1.tar.gz", hash = "sha256:12b641b0c539073fc8d3f5b8b7be998956665c4233c7c1fcd66a7e677c4fb36f", size = 155031 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/da/43b15f28fe5f9e027b41c539abc5469052e9d48fd75f8ff094ba2a0ae767/billiard-4.2.1-py3-none-any.whl", hash = "sha256:40b59a4ac8806ba2c2369ea98d876bc6108b051c227baffd928c644d15d8f3cb", size = 86766 }, +] + +[[package]] +name = "binaryornot" +version = "0.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "chardet" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006 }, +] + +[[package]] +name = "black" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988 }, + { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985 }, + { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816 }, + { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860 }, + { url = "https://files.pythonhosted.org/packages/98/87/0edf98916640efa5d0696e1abb0a8357b52e69e82322628f25bf14d263d1/black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f", size = 1650673 }, + { url = "https://files.pythonhosted.org/packages/52/e5/f7bf17207cf87fa6e9b676576749c6b6ed0d70f179a3d812c997870291c3/black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3", size = 1453190 }, + { url = "https://files.pythonhosted.org/packages/e3/ee/adda3d46d4a9120772fae6de454c8495603c37c4c3b9c60f25b1ab6401fe/black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171", size = 1782926 }, + { url = "https://files.pythonhosted.org/packages/cc/64/94eb5f45dcb997d2082f097a3944cfc7fe87e071907f677e80788a2d7b7a/black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18", size = 1442613 }, + { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646 }, +] + +[[package]] +name = "bleach" +version = "6.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, +] + +[[package]] +name = "blinker" +version = "1.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/28/9b3f50ce0e048515135495f198351908d99540d69bfdc8c1d15b73dc55ce/blinker-1.9.0.tar.gz", hash = "sha256:b4ce2265a7abece45e7cc896e98dbebe6cead56bcf805a3d23136d145f5445bf", size = 22460 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/cb/f2ad4230dc2eb1a74edf38f1a38b9b52277f75bef262d8908e60d957e13c/blinker-1.9.0-py3-none-any.whl", hash = "sha256:ba0efaa9080b619ff2f3459d1d500c57bddea4a6b424b60a91141db6fd2f08bc", size = 8458 }, +] + +[[package]] +name = "boto3" +version = "1.37.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, + { name = "jmespath" }, + { name = "s3transfer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/8c/c2af03daafaacea1db1823d23073facffa75818b61d376c3be77dd297ae8/boto3-1.37.1.tar.gz", hash = "sha256:96d18f7feb0c1fcb95f8837b74b6c8880e1b4e35ce5f8a8f8cb243a090c278ed", size = 111175 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/ec/e722c53c9dc41e8df094587c32e19409bace8b43b5eb31fe3536ca57a38b/boto3-1.37.1-py3-none-any.whl", hash = "sha256:4320441f904435a1b85e6ecb81793192e522c737cc9ed6566014e29f0a11cb22", size = 139338 }, +] + +[[package]] +name = "botocore" +version = "1.37.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jmespath" }, + { name = "python-dateutil" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/01/3083bff25fd91193162298920cb093b9095609408416526d52b2826965b7/botocore-1.37.1.tar.gz", hash = "sha256:b194db8fb2a0ffba53568c364ae26166e7eec0445496b2ac86a6e142f3dd982f", size = 13578835 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/20/352b2bf99f93ba18986615841786cbd0d38f7856bd49d4e154a540f04afe/botocore-1.37.1-py3-none-any.whl", hash = "sha256:c1db1bfc5d8c6b3b6d1ca6794f605294b4264e82a7e727b88e0fef9c2b9fbb9c", size = 13359164 }, +] + +[[package]] +name = "build" +version = "1.2.2.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "os_name == 'nt'" }, + { name = "packaging" }, + { name = "pyproject-hooks" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/46/aeab111f8e06793e4f0e421fcad593d547fb8313b50990f31681ee2fb1ad/build-1.2.2.post1.tar.gz", hash = "sha256:b36993e92ca9375a219c99e606a122ff365a760a2d4bba0caa09bd5278b608b7", size = 46701 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/c2/80633736cd183ee4a62107413def345f7e6e3c01563dbca1417363cf957e/build-1.2.2.post1-py3-none-any.whl", hash = "sha256:1d61c0887fa860c01971625baae8bdd338e517b836a2f70dd1f7aa3a6b2fc5b5", size = 22950 }, +] + +[[package]] +name = "cachelib" +version = "0.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/69/0b5c1259e12fbcf5c2abe5934b5c0c1294ec0f845e2b4b2a51a91d79a4fb/cachelib-0.13.0.tar.gz", hash = "sha256:209d8996e3c57595bee274ff97116d1d73c4980b2fd9a34c7846cd07fd2e1a48", size = 34418 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/42/960fc9896ddeb301716fdd554bab7941c35fb90a1dc7260b77df3366f87f/cachelib-0.13.0-py3-none-any.whl", hash = "sha256:8c8019e53b6302967d4e8329a504acf75e7bc46130291d30188a6e4e58162516", size = 20914 }, +] + +[[package]] +name = "cairocffi" +version = "1.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611 }, +] + +[[package]] +name = "cairosvg" +version = "2.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cairocffi" }, + { name = "cssselect2" }, + { name = "defusedxml" }, + { name = "pillow" }, + { name = "tinycss2" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d5/e6/ec5900b724e3c44af7f6f51f719919137284e5da4aabe96508baec8a1b40/CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0", size = 8399085 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b", size = 43235 }, +] + +[[package]] +name = "celery" +version = "5.3.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "billiard" }, + { name = "click" }, + { name = "click-didyoumean" }, + { name = "click-plugins" }, + { name = "click-repl" }, + { name = "kombu" }, + { name = "python-dateutil" }, + { name = "tzdata" }, + { name = "vine" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/72/45a2d2f9b45ccc6e80e2168ce169d17bf06a98711c192d7b53d5a8accf77/celery-5.3.6.tar.gz", hash = "sha256:870cc71d737c0200c397290d730344cc991d13a057534353d124c9380267aab9", size = 1544498 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/37/c2/4c8a67a4d98a6fcd55dbdd79b641f945d7f59637c3e885c4abbda3c431f6/celery-5.3.6-py3-none-any.whl", hash = "sha256:9da4ea0118d232ce97dff5ed4974587fb1c0ff5c10042eb15278487cdd27d1af", size = 422035 }, +] + +[[package]] +name = "certifi" +version = "2025.1.31" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", size = 167577 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393 }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, +] + +[[package]] +name = "chardet" +version = "5.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, + { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, + { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, + { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, + { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, + { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, + { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, + { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, + { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, + { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, + { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, + { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, + { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, + { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698 }, + { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162 }, + { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263 }, + { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966 }, + { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992 }, + { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162 }, + { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972 }, + { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095 }, + { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668 }, + { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073 }, + { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732 }, + { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391 }, + { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702 }, + { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, +] + +[[package]] +name = "check-manifest" +version = "0.50" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "build" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/ab/7607952f2c8d34c4124309dd3ea17c256fd3420a4ade01322daf9402b0b5/check_manifest-0.50.tar.gz", hash = "sha256:d300f9f292986aa1a30424af44eb45c5644e0a810e392e62d553b24bb3393494", size = 44827 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/55/92207fa9b92ac2ade5593b1280f804f2590a680b7fe96775eb26074eec6b/check_manifest-0.50-py3-none-any.whl", hash = "sha256:6ab3e3aa72a008da3314b432f4c768c9647b4d6d8032f9e1a4672a572118e48c", size = 20385 }, +] + +[[package]] +name = "citeproc-py" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/24/6c/d6b638e1cc64a0d99e42de524448da6f5d5972288e7f1557a22dbe9a0c42/citeproc-py-0.6.0.tar.gz", hash = "sha256:d9e3a224f936fe2e5033b5d9ffdacab769cedb61d96c4e0cf2f0b488f1d24b4e", size = 140624 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/e8/5e42b253c40d1087a4ef341d78d88b7a9beb46e6ab9cec19c75e4e3cba78/citeproc_py-0.6.0-py3-none-any.whl", hash = "sha256:ca4c7a5158d6f68cb00a89bb47d9aa0eec7b89b18e574eb08a061b011b602bbe", size = 179912 }, +] + +[[package]] +name = "citeproc-py-styles" +version = "0.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/2b/4109a406a640fcf4145c4062deb9e9c1c4eb7dd1bd91107de911da0ac54e/citeproc-py-styles-0.1.3.tar.gz", hash = "sha256:94062470b4e6f0deb801e6a2c03fe1672a2f97dd0d8c1882c92ff60725d16405", size = 3369013 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/94/8a984e85aceb11826e7b8b86b1ede48517725cda66de6cd830cc5b74eda5/citeproc_py_styles-0.1.3-py2.py3-none-any.whl", hash = "sha256:22183eeab9f5c21811423a3d5e750e10c4ceb817ee9cb36814368fc8c84a6d78", size = 11638170 }, +] + +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, +] + +[[package]] +name = "click-default-group" +version = "1.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/ce/edb087fb53de63dad3b36408ca30368f438738098e668b78c87f93cd41df/click_default_group-1.2.4.tar.gz", hash = "sha256:eb3f3c99ec0d456ca6cd2a7f08f7d4e91771bef51b01bdd9580cc6450fe1251e", size = 3505 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/1a/aff8bb287a4b1400f69e09a53bd65de96aa5cee5691925b38731c67fc695/click_default_group-1.2.4-py2.py3-none-any.whl", hash = "sha256:9b60486923720e7fc61731bdb32b617039aba820e22e1c88766b1125592eaa5f", size = 4123 }, +] + +[[package]] +name = "click-didyoumean" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/ce/217289b77c590ea1e7c24242d9ddd6e249e52c795ff10fac2c50062c48cb/click_didyoumean-0.3.1.tar.gz", hash = "sha256:4f82fdff0dbe64ef8ab2279bd6aa3f6a99c3b28c05aa09cbfc07c9d7fbb5a463", size = 3089 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/5b/974430b5ffdb7a4f1941d13d83c64a0395114503cc357c6b9ae4ce5047ed/click_didyoumean-0.3.1-py3-none-any.whl", hash = "sha256:5c4bb6007cfea5f2fd6583a2fb6701a22a41eb98957e63d0fac41c10e7c3117c", size = 3631 }, +] + +[[package]] +name = "click-plugins" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497 }, +] + +[[package]] +name = "click-repl" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "prompt-toolkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/a2/57f4ac79838cfae6912f997b4d1a64a858fb0c86d7fcaae6f7b58d267fca/click-repl-0.3.0.tar.gz", hash = "sha256:17849c23dba3d667247dc4defe1757fff98694e90fe37474f3feebb69ced26a9", size = 10449 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/40/9d857001228658f0d59e97ebd4c346fe73e138c6de1bce61dc568a57c7f8/click_repl-0.3.0-py3-none-any.whl", hash = "sha256:fb7e06deb8da8de86180a33a9da97ac316751c094c6899382da7feeeeb51b812", size = 10289 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "commonmark" +version = "0.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/60/48/a60f593447e8f0894ebb7f6e6c1f25dafc5e89c5879fdc9360ae93ff83f0/commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60", size = 95764 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/92/dfd892312d822f36c55366118b95d914e5f16de11044a27cf10a7d71bbbf/commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9", size = 51068 }, +] + +[[package]] +name = "commonmeta-py" +version = "0.8.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "base32-lib" }, + { name = "beautifulsoup4" }, + { name = "bibtexparser" }, + { name = "bleach" }, + { name = "citeproc-py" }, + { name = "citeproc-py-styles" }, + { name = "click" }, + { name = "datacite" }, + { name = "dateparser" }, + { name = "docutils" }, + { name = "fastjsonschema" }, + { name = "mkdocs" }, + { name = "mkdocs-jupyter" }, + { name = "mkdocs-material" }, + { name = "mkdocs-material-extensions" }, + { name = "nameparser" }, + { name = "nbstripout" }, + { name = "pycountry" }, + { name = "pydash" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "simplejson" }, + { name = "sphinx-autodoc-typehints" }, + { name = "sphinxcontrib-issuetracker" }, + { name = "tqdm" }, + { name = "types-beautifulsoup4" }, + { name = "types-bleach" }, + { name = "types-dateparser" }, + { name = "types-pyyaml" }, + { name = "types-requests" }, + { name = "types-xmltodict" }, + { name = "xmltodict" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/aa/e4/010a387402d37df165dd284906694c62607fa1cce1176d525cb828138998/commonmeta_py-0.8.6.tar.gz", hash = "sha256:3b4862c7b4d813d7c7ac3e1aa7c56f33ce56a4e3b2a9105cbf83526edee27388", size = 228605 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/9a/bc719a4baaedd7186b095fc335629af3e9217cce1a4c25944588f129c0a1/commonmeta_py-0.8.6-py3-none-any.whl", hash = "sha256:21618a6a0933579b66f2cbcbd3a648ae63ac4eeeed4293c953eb826ee6943253", size = 248442 }, +] + +[[package]] +name = "cookiecutter" +version = "2.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, + { name = "binaryornot" }, + { name = "click" }, + { name = "jinja2" }, + { name = "python-slugify" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "rich" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/17/9f2cd228eb949a91915acd38d3eecdc9d8893dde353b603f0db7e9f6be55/cookiecutter-2.6.0.tar.gz", hash = "sha256:db21f8169ea4f4fdc2408d48ca44859349de2647fbe494a9d6c3edfc0542c21c", size = 158767 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/d9/0137658a353168ffa9d0fc14b812d3834772040858ddd1cb6eeaf09f7a44/cookiecutter-2.6.0-py3-none-any.whl", hash = "sha256:a54a8e37995e4ed963b3e82831072d1ad4b005af736bb17b99c2cbd9d41b6e2d", size = 39177 }, +] + +[[package]] +name = "counter-robots" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/5e/070796e2b6cce119281b0c6d1781c409547dfc0d8e66711aa9acebac4456/counter_robots-2025.2.tar.gz", hash = "sha256:dc477abd4199b64211b25f42307ee0835598aa9fbe732a889717466780d3d3f3", size = 19342 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/f2/c49185f039b322a458ee978f595d164fadd748a82c21b8d3a019fed199a0/counter_robots-2025.2-py2.py3-none-any.whl", hash = "sha256:c34d8a3a1df728775f48196f74242c37268b9abc7d919cf4f2a5b6ac879514b7", size = 7417 }, +] + +[[package]] +name = "coverage" +version = "7.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/bf/3effb7453498de9c14a81ca21e1f92e6723ce7ebdc5402ae30e4dcc490ac/coverage-7.7.1.tar.gz", hash = "sha256:199a1272e642266b90c9f40dec7fd3d307b51bf639fa0d15980dc0b3246c1393", size = 810332 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/b0/4eaba302a86ec3528231d7cfc954ae1929ec5d42b032eb6f5b5f5a9155d2/coverage-7.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:eff187177d8016ff6addf789dcc421c3db0d014e4946c1cc3fbf697f7852459d", size = 211253 }, + { url = "https://files.pythonhosted.org/packages/fd/68/21b973e6780a3f2457e31ede1aca6c2f84bda4359457b40da3ae805dcf30/coverage-7.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2444fbe1ba1889e0b29eb4d11931afa88f92dc507b7248f45be372775b3cef4f", size = 211504 }, + { url = "https://files.pythonhosted.org/packages/d1/b4/c19e9c565407664390254252496292f1e3076c31c5c01701ffacc060e745/coverage-7.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:177d837339883c541f8524683e227adcaea581eca6bb33823a2a1fdae4c988e1", size = 245566 }, + { url = "https://files.pythonhosted.org/packages/7b/0e/f9829cdd25e5083638559c8c267ff0577c6bab19dacb1a4fcfc1e70e41c0/coverage-7.7.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15d54ecef1582b1d3ec6049b20d3c1a07d5e7f85335d8a3b617c9960b4f807e0", size = 242455 }, + { url = "https://files.pythonhosted.org/packages/29/57/a3ada2e50a665bf6d9851b5eb3a9a07d7e38f970bdd4d39895f311331d56/coverage-7.7.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c82b27c56478d5e1391f2e7b2e7f588d093157fa40d53fd9453a471b1191f2", size = 244713 }, + { url = "https://files.pythonhosted.org/packages/0f/d3/f15c7d45682a73eca0611427896016bad4c8f635b0fc13aae13a01f8ed9d/coverage-7.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:315ff74b585110ac3b7ab631e89e769d294f303c6d21302a816b3554ed4c81af", size = 244476 }, + { url = "https://files.pythonhosted.org/packages/19/3b/64540074e256082b220e8810fd72543eff03286c59dc91976281dc0a559c/coverage-7.7.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4dd532dac197d68c478480edde74fd4476c6823355987fd31d01ad9aa1e5fb59", size = 242695 }, + { url = "https://files.pythonhosted.org/packages/8a/c1/9cad25372ead7f9395a91bb42d8ae63e6cefe7408eb79fd38797e2b763eb/coverage-7.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:385618003e3d608001676bb35dc67ae3ad44c75c0395d8de5780af7bb35be6b2", size = 243888 }, + { url = "https://files.pythonhosted.org/packages/66/c6/c3e6c895bc5b95ccfe4cb5838669dbe5226ee4ad10604c46b778c304d6f9/coverage-7.7.1-cp312-cp312-win32.whl", hash = "sha256:63306486fcb5a827449464f6211d2991f01dfa2965976018c9bab9d5e45a35c8", size = 213744 }, + { url = "https://files.pythonhosted.org/packages/cc/8a/6df2fcb4c3e38ec6cd7e211ca8391405ada4e3b1295695d00aa07c6ee736/coverage-7.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:37351dc8123c154fa05b7579fdb126b9f8b1cf42fd6f79ddf19121b7bdd4aa04", size = 214546 }, + { url = "https://files.pythonhosted.org/packages/ec/2a/1a254eaadb01c163b29d6ce742aa380fc5cfe74a82138ce6eb944c42effa/coverage-7.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:eebd927b86761a7068a06d3699fd6c20129becf15bb44282db085921ea0f1585", size = 211277 }, + { url = "https://files.pythonhosted.org/packages/cf/00/9636028365efd4eb6db71cdd01d99e59f25cf0d47a59943dbee32dd1573b/coverage-7.7.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2a79c4a09765d18311c35975ad2eb1ac613c0401afdd9cb1ca4110aeb5dd3c4c", size = 211551 }, + { url = "https://files.pythonhosted.org/packages/6f/c8/14aed97f80363f055b6cd91e62986492d9fe3b55e06b4b5c82627ae18744/coverage-7.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b1c65a739447c5ddce5b96c0a388fd82e4bbdff7251396a70182b1d83631019", size = 245068 }, + { url = "https://files.pythonhosted.org/packages/d6/76/9c5fe3f900e01d7995b0cda08fc8bf9773b4b1be58bdd626f319c7d4ec11/coverage-7.7.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:392cc8fd2b1b010ca36840735e2a526fcbd76795a5d44006065e79868cc76ccf", size = 242109 }, + { url = "https://files.pythonhosted.org/packages/c0/81/760993bb536fb674d3a059f718145dcd409ed6d00ae4e3cbf380019fdfd0/coverage-7.7.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bb47cc9f07a59a451361a850cb06d20633e77a9118d05fd0f77b1864439461b", size = 244129 }, + { url = "https://files.pythonhosted.org/packages/00/be/1114a19f93eae0b6cd955dabb5bee80397bd420d846e63cd0ebffc134e3d/coverage-7.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b4c144c129343416a49378e05c9451c34aae5ccf00221e4fa4f487db0816ee2f", size = 244201 }, + { url = "https://files.pythonhosted.org/packages/06/8d/9128fd283c660474c7dc2b1ea5c66761bc776b970c1724989ed70e9d6eee/coverage-7.7.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:bc96441c9d9ca12a790b5ae17d2fa6654da4b3962ea15e0eabb1b1caed094777", size = 242282 }, + { url = "https://files.pythonhosted.org/packages/d4/2a/6d7dbfe9c1f82e2cdc28d48f4a0c93190cf58f057fa91ba2391b92437fe6/coverage-7.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3d03287eb03186256999539d98818c425c33546ab4901028c8fa933b62c35c3a", size = 243570 }, + { url = "https://files.pythonhosted.org/packages/cf/3e/29f1e4ce3bb951bcf74b2037a82d94c5064b3334304a3809a95805628838/coverage-7.7.1-cp313-cp313-win32.whl", hash = "sha256:8fed429c26b99641dc1f3a79179860122b22745dd9af36f29b141e178925070a", size = 213772 }, + { url = "https://files.pythonhosted.org/packages/bc/3a/cf029bf34aefd22ad34f0e808eba8d5830f297a1acb483a2124f097ff769/coverage-7.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:092b134129a8bb940c08b2d9ceb4459af5fb3faea77888af63182e17d89e1cf1", size = 214575 }, + { url = "https://files.pythonhosted.org/packages/92/4c/fb8b35f186a2519126209dce91ab8644c9a901cf04f8dfa65576ca2dd9e8/coverage-7.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:d3154b369141c3169b8133973ac00f63fcf8d6dbcc297d788d36afbb7811e511", size = 212113 }, + { url = "https://files.pythonhosted.org/packages/59/90/e834ffc86fd811c5b570a64ee1895b20404a247ec18a896b9ba543b12097/coverage-7.7.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:264ff2bcce27a7f455b64ac0dfe097680b65d9a1a293ef902675fa8158d20b24", size = 212333 }, + { url = "https://files.pythonhosted.org/packages/a5/a1/27f0ad39569b3b02410b881c42e58ab403df13fcd465b475db514b83d3d3/coverage-7.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba8480ebe401c2f094d10a8c4209b800a9b77215b6c796d16b6ecdf665048950", size = 256566 }, + { url = "https://files.pythonhosted.org/packages/9f/3b/21fa66a1db1b90a0633e771a32754f7c02d60236a251afb1b86d7e15d83a/coverage-7.7.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:520af84febb6bb54453e7fbb730afa58c7178fd018c398a8fcd8e269a79bf96d", size = 252276 }, + { url = "https://files.pythonhosted.org/packages/d6/e5/4ab83a59b0f8ac4f0029018559fc4c7d042e1b4552a722e2bfb04f652296/coverage-7.7.1-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88d96127ae01ff571d465d4b0be25c123789cef88ba0879194d673fdea52f54e", size = 254616 }, + { url = "https://files.pythonhosted.org/packages/db/7a/4224417c0ccdb16a5ba4d8d1fcfaa18439be1624c29435bb9bc88ccabdfb/coverage-7.7.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:0ce92c5a9d7007d838456f4b77ea159cb628187a137e1895331e530973dcf862", size = 255707 }, + { url = "https://files.pythonhosted.org/packages/51/20/ff18a329ccaa3d035e2134ecf3a2e92a52d3be6704c76e74ca5589ece260/coverage-7.7.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:0dab4ef76d7b14f432057fdb7a0477e8bffca0ad39ace308be6e74864e632271", size = 253876 }, + { url = "https://files.pythonhosted.org/packages/e4/e8/1d6f1a6651672c64f45ffad05306dad9c4c189bec694270822508049b2cb/coverage-7.7.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:7e688010581dbac9cab72800e9076e16f7cccd0d89af5785b70daa11174e94de", size = 254687 }, + { url = "https://files.pythonhosted.org/packages/6b/ea/1b9a14cf3e2bc3fd9de23a336a8082091711c5f480b500782d59e84a8fe5/coverage-7.7.1-cp313-cp313t-win32.whl", hash = "sha256:e52eb31ae3afacdacfe50705a15b75ded67935770c460d88c215a9c0c40d0e9c", size = 214486 }, + { url = "https://files.pythonhosted.org/packages/cc/bb/faa6bcf769cb7b3b660532a30d77c440289b40636c7f80e498b961295d07/coverage-7.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:a6b6b3bd121ee2ec4bd35039319f3423d0be282b9752a5ae9f18724bc93ebe7c", size = 215647 }, + { url = "https://files.pythonhosted.org/packages/52/26/9f53293ff4cc1d47d98367ce045ca2e62746d6be74a5c6851a474eabf59b/coverage-7.7.1-py3-none-any.whl", hash = "sha256:822fa99dd1ac686061e1219b67868e25d9757989cf2259f735a4802497d6da31", size = 203006 }, +] + +[[package]] +name = "cryptography" +version = "44.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/25/4ce80c78963834b8a9fd1cc1266be5ed8d1840785c0f2e1b73b8d128d505/cryptography-44.0.2.tar.gz", hash = "sha256:c63454aa261a0cf0c5b4718349629793e9e634993538db841165b3df74f37ec0", size = 710807 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/ef/83e632cfa801b221570c5f58c0369db6fa6cef7d9ff859feab1aae1a8a0f/cryptography-44.0.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:efcfe97d1b3c79e486554efddeb8f6f53a4cdd4cf6086642784fa31fc384e1d7", size = 6676361 }, + { url = "https://files.pythonhosted.org/packages/30/ec/7ea7c1e4c8fc8329506b46c6c4a52e2f20318425d48e0fe597977c71dbce/cryptography-44.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29ecec49f3ba3f3849362854b7253a9f59799e3763b0c9d0826259a88efa02f1", size = 3952350 }, + { url = "https://files.pythonhosted.org/packages/27/61/72e3afdb3c5ac510330feba4fc1faa0fe62e070592d6ad00c40bb69165e5/cryptography-44.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc821e161ae88bfe8088d11bb39caf2916562e0a2dc7b6d56714a48b784ef0bb", size = 4166572 }, + { url = "https://files.pythonhosted.org/packages/26/e4/ba680f0b35ed4a07d87f9e98f3ebccb05091f3bf6b5a478b943253b3bbd5/cryptography-44.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3c00b6b757b32ce0f62c574b78b939afab9eecaf597c4d624caca4f9e71e7843", size = 3958124 }, + { url = "https://files.pythonhosted.org/packages/9c/e8/44ae3e68c8b6d1cbc59040288056df2ad7f7f03bbcaca6b503c737ab8e73/cryptography-44.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7bdcd82189759aba3816d1f729ce42ffded1ac304c151d0a8e89b9996ab863d5", size = 3678122 }, + { url = "https://files.pythonhosted.org/packages/27/7b/664ea5e0d1eab511a10e480baf1c5d3e681c7d91718f60e149cec09edf01/cryptography-44.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4973da6ca3db4405c54cd0b26d328be54c7747e89e284fcff166132eb7bccc9c", size = 4191831 }, + { url = "https://files.pythonhosted.org/packages/2a/07/79554a9c40eb11345e1861f46f845fa71c9e25bf66d132e123d9feb8e7f9/cryptography-44.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4e389622b6927d8133f314949a9812972711a111d577a5d1f4bee5e58736b80a", size = 3960583 }, + { url = "https://files.pythonhosted.org/packages/bb/6d/858e356a49a4f0b591bd6789d821427de18432212e137290b6d8a817e9bf/cryptography-44.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f514ef4cd14bb6fb484b4a60203e912cfcb64f2ab139e88c2274511514bf7308", size = 4191753 }, + { url = "https://files.pythonhosted.org/packages/b2/80/62df41ba4916067fa6b125aa8c14d7e9181773f0d5d0bd4dcef580d8b7c6/cryptography-44.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1bc312dfb7a6e5d66082c87c34c8a62176e684b6fe3d90fcfe1568de675e6688", size = 4079550 }, + { url = "https://files.pythonhosted.org/packages/f3/cd/2558cc08f7b1bb40683f99ff4327f8dcfc7de3affc669e9065e14824511b/cryptography-44.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b721b8b4d948b218c88cb8c45a01793483821e709afe5f622861fc6182b20a7", size = 4298367 }, + { url = "https://files.pythonhosted.org/packages/71/59/94ccc74788945bc3bd4cf355d19867e8057ff5fdbcac781b1ff95b700fb1/cryptography-44.0.2-cp37-abi3-win32.whl", hash = "sha256:51e4de3af4ec3899d6d178a8c005226491c27c4ba84101bfb59c901e10ca9f79", size = 2772843 }, + { url = "https://files.pythonhosted.org/packages/ca/2c/0d0bbaf61ba05acb32f0841853cfa33ebb7a9ab3d9ed8bb004bd39f2da6a/cryptography-44.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:c505d61b6176aaf982c5717ce04e87da5abc9a36a5b39ac03905c4aafe8de7aa", size = 3209057 }, + { url = "https://files.pythonhosted.org/packages/9e/be/7a26142e6d0f7683d8a382dd963745e65db895a79a280a30525ec92be890/cryptography-44.0.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e0ddd63e6bf1161800592c71ac794d3fb8001f2caebe0966e77c5234fa9efc3", size = 6677789 }, + { url = "https://files.pythonhosted.org/packages/06/88/638865be7198a84a7713950b1db7343391c6066a20e614f8fa286eb178ed/cryptography-44.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81276f0ea79a208d961c433a947029e1a15948966658cf6710bbabb60fcc2639", size = 3951919 }, + { url = "https://files.pythonhosted.org/packages/d7/fc/99fe639bcdf58561dfad1faa8a7369d1dc13f20acd78371bb97a01613585/cryptography-44.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a1e657c0f4ea2a23304ee3f964db058c9e9e635cc7019c4aa21c330755ef6fd", size = 4167812 }, + { url = "https://files.pythonhosted.org/packages/53/7b/aafe60210ec93d5d7f552592a28192e51d3c6b6be449e7fd0a91399b5d07/cryptography-44.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6210c05941994290f3f7f175a4a57dbbb2afd9273657614c506d5976db061181", size = 3958571 }, + { url = "https://files.pythonhosted.org/packages/16/32/051f7ce79ad5a6ef5e26a92b37f172ee2d6e1cce09931646eef8de1e9827/cryptography-44.0.2-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1c3572526997b36f245a96a2b1713bf79ce99b271bbcf084beb6b9b075f29ea", size = 3679832 }, + { url = "https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b042d2a275c8cee83a4b7ae30c45a15e6a4baa65a179a0ec2d78ebb90e4f6699", size = 4193719 }, + { url = "https://files.pythonhosted.org/packages/72/97/430e56e39a1356e8e8f10f723211a0e256e11895ef1a135f30d7d40f2540/cryptography-44.0.2-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d03806036b4f89e3b13b6218fefea8d5312e450935b1a2d55f0524e2ed7c59d9", size = 3960852 }, + { url = "https://files.pythonhosted.org/packages/89/33/c1cf182c152e1d262cac56850939530c05ca6c8d149aa0dcee490b417e99/cryptography-44.0.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c7362add18b416b69d58c910caa217f980c5ef39b23a38a0880dfd87bdf8cd23", size = 4193906 }, + { url = "https://files.pythonhosted.org/packages/e1/99/87cf26d4f125380dc674233971069bc28d19b07f7755b29861570e513650/cryptography-44.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8cadc6e3b5a1f144a039ea08a0bdb03a2a92e19c46be3285123d32029f40a922", size = 4081572 }, + { url = "https://files.pythonhosted.org/packages/b3/9f/6a3e0391957cc0c5f84aef9fbdd763035f2b52e998a53f99345e3ac69312/cryptography-44.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6f101b1f780f7fc613d040ca4bdf835c6ef3b00e9bd7125a4255ec574c7916e4", size = 4298631 }, + { url = "https://files.pythonhosted.org/packages/e2/a5/5bc097adb4b6d22a24dea53c51f37e480aaec3465285c253098642696423/cryptography-44.0.2-cp39-abi3-win32.whl", hash = "sha256:3dc62975e31617badc19a906481deacdeb80b4bb454394b4098e3f2525a488c5", size = 2773792 }, + { url = "https://files.pythonhosted.org/packages/33/cf/1f7649b8b9a3543e042d3f348e398a061923ac05b507f3f4d95f11938aa9/cryptography-44.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:5f6f90b72d8ccadb9c6e311c775c8305381db88374c65fa1a68250aa8a9cb3a6", size = 3210957 }, +] + +[[package]] +name = "cssbeautifier" +version = "1.15.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "editorconfig" }, + { name = "jsbeautifier" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f7/01/fdf41c1e5f93d359681976ba10410a04b299d248e28ecce1d4e88588dde4/cssbeautifier-1.15.4.tar.gz", hash = "sha256:9bb08dc3f64c101a01677f128acf01905914cf406baf87434dcde05b74c0acf5", size = 25376 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/51/ef6c5628e46092f0a54c7cee69acc827adc6b6aab57b55d344fefbdf28f1/cssbeautifier-1.15.4-py3-none-any.whl", hash = "sha256:78c84d5e5378df7d08622bbd0477a1abdbd209680e95480bf22f12d5701efc98", size = 123667 }, +] + +[[package]] +name = "cssselect2" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tinycss2" }, + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454 }, +] + +[[package]] +name = "datacite" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idutils" }, + { name = "importlib-metadata" }, + { name = "jsonschema" }, + { name = "lxml" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/65/50d319f7a60be79a4e865ffdb725c566fdbfbd532c60a6fa3b4d21a84596/datacite-1.2.0.tar.gz", hash = "sha256:e506dc6ce62bd930d6980b32c07c3186f3dfc8d327cd2f817b8423e4f9dd171d", size = 143128 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/27/3168279180fa3e2797617a022c30861415357e6fffa14d4b038de3e7f110/datacite-1.2.0-py2.py3-none-any.whl", hash = "sha256:be2731b189ddc558a42efcd402268f03edbc206fe1030c80147c1c48cc7552a7", size = 51326 }, +] + +[[package]] +name = "dateparser" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "regex" }, + { name = "tzlocal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/3f/d3207a05f5b6a78c66d86631e60bfba5af163738a599a5b9aa2c2737a09e/dateparser-1.2.1.tar.gz", hash = "sha256:7e4919aeb48481dbfc01ac9683c8e20bfe95bb715a38c1e9f6af889f4f30ccc3", size = 309924 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/0a/981c438c4cd84147c781e4e96c1d72df03775deb1bc76c5a6ee8afa89c62/dateparser-1.2.1-py3-none-any.whl", hash = "sha256:bdcac262a467e6260030040748ad7c10d6bacd4f3b9cdb4cfd2251939174508c", size = 295658 }, +] + +[[package]] +name = "dcxml" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/a6/cadcae31a432a2b7744724cf4908789f445954b0e37911f040451ce6d984/dcxml-0.1.2.tar.gz", hash = "sha256:484b812517afebf4e119175b5ac2efaee5a9caa2c0b62323e451e49f541e5c17", size = 15433 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/6e/5b8d379dbe49040038253eca4acd2e01eea2422af047bc10d6240cc3ca45/dcxml-0.1.2-py2.py3-none-any.whl", hash = "sha256:36a394f09ebfbb52c2931f259873a7b4ef5468f54b0bc3df66dd0d2fd2633092", size = 6902 }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, +] + +[[package]] +name = "deepdiff" +version = "8.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "orderly-set" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7f/2f/232a9f6d88a59526347cb483ec601d878ad41ab30ee4f2fba4aca1d5a10e/deepdiff-8.4.2.tar.gz", hash = "sha256:5c741c0867ebc7fcb83950ad5ed958369c17f424e14dee32a11c56073f4ee92a", size = 515380 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/03/810d2e70a6944eddc826deb7b68879d8de109369040b25eeb58cdd64d94c/deepdiff-8.4.2-py3-none-any.whl", hash = "sha256:7e39e5b26f3747c54f9d0e8b9b29daab670c3100166b77cc0185d5793121b099", size = 87610 }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, +] + +[[package]] +name = "deprecated" +version = "1.2.18" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/97/06afe62762c9a8a86af0cfb7bfdab22a43ad17138b07af5b1a58442690a2/deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d", size = 2928744 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998 }, +] + +[[package]] +name = "dictdiffer" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/61/7b/35cbccb7effc5d7e40f4c55e2b79399e1853041997fcda15c9ff160abba0/dictdiffer-0.9.0.tar.gz", hash = "sha256:17bacf5fbfe613ccf1b6d512bd766e6b21fb798822a133aa86098b8ac9997578", size = 31513 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/ef/4cb333825d10317a36a1154341ba37e6e9c087bac99c1990ef07ffdb376f/dictdiffer-0.9.0-py2.py3-none-any.whl", hash = "sha256:442bfc693cfcadaf46674575d2eba1c53b42f5e404218ca2c2ff549f2df56595", size = 16754 }, +] + +[[package]] +name = "distlib" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, +] + +[[package]] +name = "djlint" +version = "1.36.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "colorama" }, + { name = "cssbeautifier" }, + { name = "jsbeautifier" }, + { name = "json5" }, + { name = "pathspec" }, + { name = "pyyaml" }, + { name = "regex" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/89/ecf5be9f5c59a0c53bcaa29671742c5e269cc7d0e2622e3f65f41df251bf/djlint-1.36.4.tar.gz", hash = "sha256:17254f218b46fe5a714b224c85074c099bcb74e3b2e1f15c2ddc2cf415a408a1", size = 47849 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/f5/9ae02b875604755d4d00cebf96b218b0faa3198edc630f56a139581aed87/djlint-1.36.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ff9faffd7d43ac20467493fa71d5355b5b330a00ade1c4d1e859022f4195223b", size = 354886 }, + { url = "https://files.pythonhosted.org/packages/97/51/284443ff2f2a278f61d4ae6ae55eaf820ad9f0fd386d781cdfe91f4de495/djlint-1.36.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:79489e262b5ac23a8dfb7ca37f1eea979674cfc2d2644f7061d95bea12c38f7e", size = 323237 }, + { url = "https://files.pythonhosted.org/packages/6d/5e/791f4c5571f3f168ad26fa3757af8f7a05c623fde1134a9c4de814ee33b7/djlint-1.36.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e58c5fa8c6477144a0be0a87273706a059e6dd0d6efae01146ae8c29cdfca675", size = 411719 }, + { url = "https://files.pythonhosted.org/packages/1f/11/894425add6f84deffcc6e373f2ce250f2f7b01aa58c7f230016ebe7a0085/djlint-1.36.4-cp312-cp312-win_amd64.whl", hash = "sha256:bb6903777bf3124f5efedcddf1f4716aef097a7ec4223fc0fa54b865829a6e08", size = 362076 }, + { url = "https://files.pythonhosted.org/packages/da/83/88b4c885812921739f5529a29085c3762705154d41caf7eb9a8886a3380c/djlint-1.36.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ead475013bcac46095b1bbc8cf97ed2f06e83422335734363f8a76b4ba7e47c2", size = 354384 }, + { url = "https://files.pythonhosted.org/packages/32/38/67695f7a150b3d9d62fadb65242213d96024151570c3cf5d966effa68b0e/djlint-1.36.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6c601dfa68ea253311deb4a29a7362b7a64933bdfcfb5a06618f3e70ad1fa835", size = 322971 }, + { url = "https://files.pythonhosted.org/packages/ac/7a/cd851393291b12e7fe17cf5d4d8874b8ea133aebbe9235f5314aabc96a52/djlint-1.36.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bda5014f295002363381969864addeb2db13955f1b26e772657c3b273ed7809f", size = 410972 }, + { url = "https://files.pythonhosted.org/packages/6c/31/56469120394b970d4f079a552fde21ed27702ca729595ab0ed459eb6d240/djlint-1.36.4-cp313-cp313-win_amd64.whl", hash = "sha256:16ce37e085afe5a30953b2bd87cbe34c37843d94c701fc68a2dda06c1e428ff4", size = 362053 }, + { url = "https://files.pythonhosted.org/packages/4b/67/f7aeea9be6fb3bd984487af8d0d80225a0b1e5f6f7126e3332d349fb13fe/djlint-1.36.4-py3-none-any.whl", hash = "sha256:e9699b8ac3057a6ed04fb90835b89bee954ed1959c01541ce4f8f729c938afdd", size = 52290 }, +] + +[[package]] +name = "dnspython" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632 }, +] + +[[package]] +name = "docker" +version = "7.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywin32", marker = "sys_platform == 'win32'" }, + { name = "requests" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/9b/4a2ea29aeba62471211598dac5d96825bb49348fa07e906ea930394a83ce/docker-7.1.0.tar.gz", hash = "sha256:ad8c70e6e3f8926cb8a92619b832b4ea5299e2831c14284663184e200546fa6c", size = 117834 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/26/57c6fb270950d476074c087527a558ccb6f4436657314bfb6cdf484114c4/docker-7.1.0-py3-none-any.whl", hash = "sha256:c96b93b7f0a746f9e77d325bcfb87422a3d8bd4f03136ae8a85b37f1898d5fc0", size = 147774 }, +] + +[[package]] +name = "docker-services-cli" +version = "0.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/ed/a17e3c09e06418f5988634096edfa66879e000913cbfdd8e549656234871/Docker-Services-CLI-0.10.1.tar.gz", hash = "sha256:a4e4725ad12f91bcebb7a7c8ddebd71d1370bc9786e64390e47fdf5fa95715b1", size = 22807 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/1b/d3739b7fd5f141a848e79a799a9818d64c871d6923cd18ce1ee59d2d1dd5/Docker_Services_CLI-0.10.1-py2.py3-none-any.whl", hash = "sha256:a9d63c6daa3c01d10d579e7239d1dce484e52640556de1c3d026559578cdf847", size = 13752 }, +] + +[[package]] +name = "docutils" +version = "0.19" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/330ea8d383eb2ce973df34d1239b3b21e91cd8c865d21ff82902d952f91f/docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6", size = 2056383 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/69/e391bd51bc08ed9141ecd899a0ddb61ab6465309f1eb470905c0c8868081/docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc", size = 570472 }, +] + +[[package]] +name = "dojson" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "lxml" }, + { name = "simplejson" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/5e/7270a2a76e083ef6db95a2e9d8624d318f7962f2766da2538aa2f5aa9959/dojson-1.5.0.tar.gz", hash = "sha256:61732b612e877e01c40c900e933841d2cecac73cf6376df1d1270b8739914eb8", size = 305198 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/be/66896ad53e59e2ba964817b439a72561eae4b8618680135f6de9e130b6f1/dojson-1.5.0-py2.py3-none-any.whl", hash = "sha256:a154be5a9db0be89d5974572e72a9f9e77d34a68ba9ddbe4a0aabaf80605610c", size = 252213 }, +] + +[[package]] +name = "editorconfig" +version = "0.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b4/29/785595a0d8b30ab8d2486559cfba1d46487b8dcbd99f74960b6b4cca92a4/editorconfig-0.17.0.tar.gz", hash = "sha256:8739052279699840065d3a9f5c125d7d5a98daeefe53b0e5274261d77cb49aa2", size = 13369 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/e5/8dba39ea24ca3de0e954e668107692f4dfc13a85300a531fa9a39e83fde4/EditorConfig-0.17.0-py3-none-any.whl", hash = "sha256:fe491719c5f65959ec00b167d07740e7ffec9a3f362038c72b289330b9991dfc", size = 16276 }, +] + +[[package]] +name = "edtf" +version = "5.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7b/24/0a9053bea41c2860046416f3d136283233ce307adb218d406dede64a8fac/edtf-5.0.0.tar.gz", hash = "sha256:7393c570b4838c8cbc05b0687c6ea0578039ba007c8ce125206f44f18f2dea5d", size = 45617 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/08/746096971fae3585928a631912bdd4393f5ab5696706bd34cbdcccf763fc/edtf-5.0.0-py3-none-any.whl", hash = "sha256:b38ca29fa166a5c628b899a76e73a9f4cc732da565b85e737af4c0e457775f5e", size = 40319 }, +] + +[[package]] +name = "email-validator" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dnspython" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521 }, +] + +[[package]] +name = "events" +version = "0.5" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/ed/e47dec0626edd468c84c04d97769e7ab4ea6457b7f54dcb3f72b17fcd876/Events-0.5-py3-none-any.whl", hash = "sha256:a7286af378ba3e46640ac9825156c93bdba7502174dd696090fdfcd4d80a1abd", size = 6758 }, +] + +[[package]] +name = "executing" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, +] + +[[package]] +name = "faker" +version = "37.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/a6/b77f42021308ec8b134502343da882c0905d725a4d661c7adeaf7acaf515/faker-37.1.0.tar.gz", hash = "sha256:ad9dc66a3b84888b837ca729e85299a96b58fdaef0323ed0baace93c9614af06", size = 1875707 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/a1/8936bc8e79af80ca38288dd93ed44ed1f9d63beb25447a4c59e746e01f8d/faker-37.1.0-py3-none-any.whl", hash = "sha256:dc2f730be71cb770e9c715b13374d80dbcee879675121ab51f9683d262ae9a1c", size = 1918783 }, +] + +[[package]] +name = "fastjsonschema" +version = "2.21.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, +] + +[[package]] +name = "filelock" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, +] + +[[package]] +name = "flask" +version = "2.2.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5f/76/a4d2c4436dda4b0a12c71e075c508ea7988a1066b06a575f6afe4fecc023/Flask-2.2.5.tar.gz", hash = "sha256:edee9b0a7ff26621bd5a8c10ff484ae28737a2410d99b0bb9a6850c7fb977aa0", size = 697814 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/1a/8b6d48162861009d1e017a9740431c78d860809773b66cac220a11aa3310/Flask-2.2.5-py3-none-any.whl", hash = "sha256:58107ed83443e86067e41eff4631b058178191a355886f8e479e347fa1285fdf", size = 101817 }, +] + +[[package]] +name = "flask-admin" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "wtforms" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/4d/7cad383a93e3e1dd9378f1fcf05ddc532c6d921fb30c19ce8f8583630f24/Flask-Admin-1.6.1.tar.gz", hash = "sha256:24cae2af832b6a611a01d7dc35f42d266c1d6c75a426b869d8cb241b78233369", size = 6651224 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/b3/656c78dfef163517dbbc9fd106f0604e37b436ad51f9d9450b60e9407e35/Flask_Admin-1.6.1-py3-none-any.whl", hash = "sha256:fd8190f1ec3355913a22739c46ed3623f1d82b8112cde324c60a6fc9b21c9406", size = 7498141 }, +] + +[[package]] +name = "flask-alembic" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "alembic" }, + { name = "flask" }, + { name = "flask-sqlalchemy" }, + { name = "sqlalchemy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/4d/6cf6182051bd31177ec5612eec3b211af0a3880e82a4e6137b6d1518593b/Flask-Alembic-2.0.1.tar.gz", hash = "sha256:05a1e6f4148dbfcc9280a393373bfbd250af6f9f4f0ca9f744ef8f7376a3deec", size = 16410 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/fc/63f9bccffbde7c303fe2958e6b54b4cdf8e0cb94c37b197362e1ef860230/Flask_Alembic-2.0.1-py2.py3-none-any.whl", hash = "sha256:7e67740b0b08d58dcae0c701d56b56e60f5fa4af907bb82b4cb0469229ba94ff", size = 10610 }, +] + +[[package]] +name = "flask-babel" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "flask" }, + { name = "jinja2" }, + { name = "pytz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/58/1a/4c65e3b90bda699a637bfb7fb96818b0a9bbff7636ea91aade67f6020a31/flask_babel-4.0.0.tar.gz", hash = "sha256:dbeab4027a3f4a87678a11686496e98e1492eb793cbdd77ab50f4e9a2602a593", size = 10178 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/14/c2/e0ab5abe37882e118482884f2ec660cd06da644ddfbceccf5f88f546b574/flask_babel-4.0.0-py3-none-any.whl", hash = "sha256:638194cf91f8b301380f36d70e2034c77ee25b98cb5d80a1626820df9a6d4625", size = 9602 }, +] + +[[package]] +name = "flask-babelex" +version = "0.9.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "flask" }, + { name = "jinja2" }, + { name = "speaklater" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/e7/217fb37ccd4bd93cd0f002028fb7c5fdf6ee0063a6beb83e43cd903da46e/Flask-BabelEx-0.9.4.tar.gz", hash = "sha256:39a59ccee9386a9d52d80b9101224402036aedc2c7873b11deef6e4e21cace27", size = 43423 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/f2/a9b45a4729b7169d51b32fdeb526491b7e8f872abf4b9e049e489a52c519/Flask_BabelEx-0.9.4-py3-none-any.whl", hash = "sha256:f744d0557cb04cafed733cfa96e7373b46263d4cf79a2c5988c65085f360d873", size = 8748 }, +] + +[[package]] +name = "flask-breadcrumbs" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "flask-menu" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6b/2b/52de3b8e1241ebee9134a3e3e6f22f412714d157b271576b935dee58a51b/Flask-Breadcrumbs-0.5.1.tar.gz", hash = "sha256:f95872a3baf46473febd0f5c0adea192e7c2576af60a84a2144068eca1559b45", size = 17740 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/8e/288cb0f652231ecd5e0d2e1e5b3e0cfc46494059442e931211099bf9da9e/Flask_Breadcrumbs-0.5.1-py2.py3-none-any.whl", hash = "sha256:cb6fc89d7f76ff429fa4bb1fbc0bfe186f3f7ff8b4f5325c0a7b75946e2de98f", size = 7062 }, +] + +[[package]] +name = "flask-caching" +version = "2.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachelib" }, + { name = "flask" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/80/74846c8af58ed60972d64f23a6cd0c3ac0175677d7555dff9f51bf82c294/flask_caching-2.3.1.tar.gz", hash = "sha256:65d7fd1b4eebf810f844de7de6258254b3248296ee429bdcb3f741bcbf7b98c9", size = 67560 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/bb/82daa5e2fcecafadcc8659ce5779679d0641666f9252a4d5a2ae987b0506/Flask_Caching-2.3.1-py3-none-any.whl", hash = "sha256:d3efcf600e5925ea5a2fcb810f13b341ae984f5b52c00e9d9070392f3ca10761", size = 28916 }, +] + +[[package]] +name = "flask-celeryext" +version = "0.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "celery" }, + { name = "flask" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/58/1395b07b9f8ab38ee6e13db16f60ddd82927b4782624e554d3a686a45fd9/Flask-CeleryExt-0.5.0.tar.gz", hash = "sha256:a23a0293bbe8e134233119e003e83ce9fe4f2caaf3fc23d91e09d252c7beb6e5", size = 18526 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/03/abf800759cd75ab335b3385dc1663c57797d4e7dfd54111ff3351c101246/Flask_CeleryExt-0.5.0-py2.py3-none-any.whl", hash = "sha256:9c4b5c3c157923c86f3c92980bf3a58d0949a2dbf5d3a14b87135bb20d19b71b", size = 10108 }, +] + +[[package]] +name = "flask-collect-invenio" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/ef/1b253332bd27ddb4152f7702e7c91b5d9048086edd1930c7a3ed97af56cf/Flask-Collect-Invenio-1.4.0.tar.gz", hash = "sha256:52c8343773f6366bb1594905e5c8e1f92101ec06c20e966420237ddad2a7918a", size = 10031 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/42/d92da307dddb7e4589e7cada9d6abeb144c20d990f34dd3edc2f96a26b34/Flask_Collect_Invenio-1.4.0-py2.py3-none-any.whl", hash = "sha256:cf969b7cddf27086ee19883e9660aeac2d455646cbad2a43799660b3cc0cbffb", size = 11990 }, +] + +[[package]] +name = "flask-cors" +version = "5.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/32/d8/667bd90d1ee41c96e938bafe81052494e70b7abd9498c4a0215c103b9667/flask_cors-5.0.1.tar.gz", hash = "sha256:6ccb38d16d6b72bbc156c1c3f192bc435bfcc3c2bc864b2df1eb9b2d97b2403c", size = 11643 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/61/4aea5fb55be1b6f95e604627dc6c50c47d693e39cab2ac086ee0155a0abd/flask_cors-5.0.1-py3-none-any.whl", hash = "sha256:fa5cb364ead54bbf401a26dbf03030c6b18fb2fcaf70408096a572b409586b0c", size = 11296 }, +] + +[[package]] +name = "flask-iiif" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "cachelib" }, + { name = "flask" }, + { name = "flask-restful" }, + { name = "pillow" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/13/4f46b5818a421bc5c9e20bc3b58717b7ba50002134c7499de37fd43c07d1/flask-iiif-1.2.0.tar.gz", hash = "sha256:8f288697d0eb747652bd9420b49586f2a77714f7805535a5cd2ba62484503344", size = 35364 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/9a/0602c5ff803f9833da4ed7d3c69a7be31c2755a5dd9b26fe76ceb948b2f3/flask_iiif-1.2.0-py2.py3-none-any.whl", hash = "sha256:5b11b93bbb91d7a6e9f7eacb6291979f04161edb9bc8025bdaab52f301f3b367", size = 36586 }, +] + +[[package]] +name = "flask-kvsession-invenio" +version = "0.6.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "itsdangerous" }, + { name = "simplekv" }, + { name = "six" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/bb/d5fe5cd6a3d1520c2484243e43625942551814944f7ab8621535de3a30a4/flask_kvsession_invenio-0.6.4.tar.gz", hash = "sha256:5f153ccdab2ec013b9be23e80faa995f872b8559c9bce6322e1a5cb260e3fde4", size = 42386 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/cf/f35561828c6e87989c810e4e8b519508f3ffd96d5c863d5a474edf900ff6/Flask_KVSession_Invenio-0.6.4-py3-none-any.whl", hash = "sha256:4c49a34bc3c1f4b53175d10514769818ec861febd129a3b545ebf9a8ad5d7bbb", size = 6963 }, +] + +[[package]] +name = "flask-limiter" +version = "2.9.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "limits" }, + { name = "ordered-set" }, + { name = "rich" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/87/83bc93c0a3186df3b38587e6b1d9bed41be4abbae01edad7843ac5059d1c/Flask-Limiter-2.9.2.tar.gz", hash = "sha256:041bf0d72c8c62d2cb54c772de1ad842c82bdefeddfadc1c9171739f296484e2", size = 286145 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/ab/7326f9851b587c219effc350fc811dbe54318e67aa82a169ebb6c56fe705/Flask_Limiter-2.9.2-py3-none-any.whl", hash = "sha256:64c6456204d88006324127071598a04cdd77be1576e00e8f5b74fad80925ea37", size = 27415 }, +] + +[[package]] +name = "flask-login" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/6e/2f4e13e373bb49e68c02c51ceadd22d172715a06716f9299d9df01b6ddb2/Flask-Login-0.6.3.tar.gz", hash = "sha256:5e23d14a607ef12806c699590b89d0f0e0d67baeec599d75947bf9c147330333", size = 48834 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/f5/67e9cc5c2036f58115f9fe0f00d203cf6780c3ff8ae0e705e7a9d9e8ff9e/Flask_Login-0.6.3-py3-none-any.whl", hash = "sha256:849b25b82a436bf830a054e74214074af59097171562ab10bfa999e6b78aae5d", size = 17303 }, +] + +[[package]] +name = "flask-mail" +version = "0.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "flask" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/2f/6a545452040c2556559779db87148d2a85e78a26f90326647b51dc5e81e9/Flask-Mail-0.9.1.tar.gz", hash = "sha256:22e5eb9a940bf407bcf30410ecc3708f3c56cc44b29c34e1726fe85006935f41", size = 45654 } + +[[package]] +name = "flask-menu" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/62/db/96bf20cb438a1dafa4c302b0091933dd09cad142fdbfe1c850dfc53e8a9c/flask_menu-2.0.0.tar.gz", hash = "sha256:162b409e444bea4ab10f12ab1270dd3d62dc0bd1f3d43b3e964a931019f5d580", size = 21775 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/c1/81f36322304ccee08505329cb4ff185847fca107f2e51e3b0d4316bc1403/flask_menu-2.0.0-py3-none-any.whl", hash = "sha256:bd9a4c9c4241300aa05e3f27da7d8953f197d4591763a2e0495381b7d9713efa", size = 9440 }, +] + +[[package]] +name = "flask-oauthlib" +version = "0.9.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachelib" }, + { name = "flask" }, + { name = "oauthlib" }, + { name = "requests-oauthlib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/75/f2/54a551d00a39dac9aa58d97b45e3c05051e7eea8ed686e4b6be91fc075a6/Flask-OAuthlib-0.9.6.tar.gz", hash = "sha256:5bb79c8a8e670c2eb4cb553dfc3283b6c8d1202f674934676dc173cee94fe39c", size = 37253 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/d8/f272aae56f12cf5f2f84ca7340e17be7f2e5e880f914838afb1b3ef045c1/Flask_OAuthlib-0.9.6-py3-none-any.whl", hash = "sha256:a5c3b62959aa1922470a62b6ebf4273b75f1c29561a7eb4a69cde85d45a1d669", size = 40184 }, +] + +[[package]] +name = "flask-principal" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "flask" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/14/c7/2531aca6ab7baa3774fde2dfc9c9dd6d5a42576a1013a93701bfdc402fdd/Flask-Principal-0.4.0.tar.gz", hash = "sha256:f5d6134b5caebfdbb86f32d56d18ee44b080876a27269560a96ea35f75c99453", size = 5452 } + +[[package]] +name = "flask-resources" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "marshmallow" }, + { name = "speaklater" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/51/4d/a057a72498ecab04578d1ba785e52af1f461f2cd82349b2eaf855cb8a6a0/flask-resources-1.2.0.tar.gz", hash = "sha256:c4a07963ebfb1ec4792ed3612dceda8238461fd6d30fb351dffcfe612e097205", size = 31890 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/72/63b7206e46b638f06808d40efe1d66c0ec009038c3c7ae89326276cf2d32/flask_resources-1.2.0-py2.py3-none-any.whl", hash = "sha256:c5aa23308d808a5d29f21ec3858404dac47f33af3974735c423c18d8253b3a05", size = 27326 }, +] + +[[package]] +name = "flask-restful" +version = "0.3.10" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aniso8601" }, + { name = "flask" }, + { name = "pytz" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/ce/a0a133db616ea47f78a41e15c4c68b9f08cab3df31eb960f61899200a119/Flask-RESTful-0.3.10.tar.gz", hash = "sha256:fe4af2ef0027df8f9b4f797aba20c5566801b6ade995ac63b588abf1a59cec37", size = 110453 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/7b/f0b45f0df7d2978e5ae51804bb5939b7897b2ace24306009da0cc34d8d1f/Flask_RESTful-0.3.10-py2.py3-none-any.whl", hash = "sha256:1cf93c535172f112e080b0d4503a8d15f93a48c88bdd36dd87269bdaf405051b", size = 26217 }, +] + +[[package]] +name = "flask-security-invenio" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "email-validator" }, + { name = "flask" }, + { name = "flask-babel" }, + { name = "flask-login" }, + { name = "flask-mail" }, + { name = "flask-principal" }, + { name = "flask-wtf" }, + { name = "itsdangerous" }, + { name = "markupsafe" }, + { name = "passlib" }, + { name = "speaklater" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/7d/bb2db086006a63ac21533f1117015cb0b04e409617f0ac95b6305e8338fa/Flask-Security-Invenio-3.4.0.tar.gz", hash = "sha256:8d8ad6e4ce2441fe6ae4c33f9ef0f2f5e0228f039667918c477fef63c877d50e", size = 117412 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/19/4470d43176baa1bd5f41e5285368a86a3351c9a7748fdb50c38cbe0f7391/Flask_Security_Invenio-3.4.0-py2.py3-none-any.whl", hash = "sha256:dc6b9095c1e145b43e3a7a9c945313da16fb298a5250414cc21405e301673cf6", size = 102952 }, +] + +[[package]] +name = "flask-shell-ipython" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "flask" }, + { name = "ipython" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/14/85/cd1341451be9f34a5ab8895b596ca606aef6ce643452d47148c17d4a96a9/flask_shell_ipython-0.5.3.tar.gz", hash = "sha256:1a8bb90da18c34d15bc4ad817820101fffa93507a7eb685532ed518aea280848", size = 4001 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/e0/5e8480206303e4bd7340d74fce4be21340a762ba1f7ce2c6219def66eff2/flask_shell_ipython-0.5.3-py3-none-any.whl", hash = "sha256:c0a1905671ba7223d36e59854e7900832a0febf127e5c01793377af878560ebd", size = 3914 }, +] + +[[package]] +name = "flask-sqlalchemy" +version = "2.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "sqlalchemy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/f0/39dd2d8e7e5223f78a5206d7020dc0e16718a964acfb3564d89e9798ab9b/Flask-SQLAlchemy-2.5.1.tar.gz", hash = "sha256:2bda44b43e7cacb15d4e05ff3cc1f8bc97936cc464623424102bfc2c35e95912", size = 132750 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/2c/9088b6bd95bca539230bbe9ad446737ed391aab9a83aff403e18dded3e75/Flask_SQLAlchemy-2.5.1-py2.py3-none-any.whl", hash = "sha256:f12c3d4cc5cc7fdcc148b9527ea05671718c3ea45d50c7e732cceb33f574b390", size = 17716 }, +] + +[[package]] +name = "flask-talisman" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dd/1a/9f21ccb72a0d09594eb704da7f87a6d373ad7e9d4ac18693d1a3c275afb2/flask-talisman-0.8.1.tar.gz", hash = "sha256:5d502ec0c51bf1755a797b8cffbe4e94f8684af712ba0b56f3d80b79277ef285", size = 23799 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/f1/3c2a37a8053149521407bff4573cecca93d86b1f15a027e8cc4463da6261/flask_talisman-0.8.1-py2.py3-none-any.whl", hash = "sha256:08a25360c771f7a79d6d4db2abfa71f7422e62a714418b671d69d6a201764d05", size = 18899 }, +] + +[[package]] +name = "flask-webpackext" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "pywebpack" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/15/10bafe1a2c041df276951582c821477206bf94c313ab4b11db002e8d73d6/flask_webpackext-2.0.0.tar.gz", hash = "sha256:7432c2e8d9039238f2f8476b004520278cd13ea3f802f9695536f273dce67f7e", size = 25360 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/34/f4638174e8f6ca5271c0e9723310075295d4818db9daaebf6badda5d231e/flask_webpackext-2.0.0-py2.py3-none-any.whl", hash = "sha256:7b9d382d13de23e722095727038201cdeca1f046f3c287eae81271e9336062d8", size = 14705 }, +] + +[[package]] +name = "flask-wtf" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "itsdangerous" }, + { name = "wtforms" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/80/9b/f1cd6e41bbf874f3436368f2c7ee3216c1e82d666ff90d1d800e20eb1317/flask_wtf-1.2.2.tar.gz", hash = "sha256:79d2ee1e436cf570bccb7d916533fa18757a2f18c290accffab1b9a0b684666b", size = 42641 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/19/354449145fbebb65e7c621235b6ad69bebcfaec2142481f044d0ddc5b5c5/flask_wtf-1.2.2-py3-none-any.whl", hash = "sha256:e93160c5c5b6b571cf99300b6e01b72f9a101027cab1579901f8b10c5daf0b70", size = 12779 }, +] + +[[package]] +name = "frozenlist" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/ed/0f4cec13a93c02c47ec32d81d11c0c1efbadf4a471e3f3ce7cad366cbbd3/frozenlist-1.5.0.tar.gz", hash = "sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817", size = 39930 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/73/fa6d1a96ab7fd6e6d1c3500700963eab46813847f01ef0ccbaa726181dd5/frozenlist-1.5.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21", size = 94026 }, + { url = "https://files.pythonhosted.org/packages/ab/04/ea8bf62c8868b8eada363f20ff1b647cf2e93377a7b284d36062d21d81d1/frozenlist-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d", size = 54150 }, + { url = "https://files.pythonhosted.org/packages/d0/9a/8e479b482a6f2070b26bda572c5e6889bb3ba48977e81beea35b5ae13ece/frozenlist-1.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e", size = 51927 }, + { url = "https://files.pythonhosted.org/packages/e3/12/2aad87deb08a4e7ccfb33600871bbe8f0e08cb6d8224371387f3303654d7/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a", size = 282647 }, + { url = "https://files.pythonhosted.org/packages/77/f2/07f06b05d8a427ea0060a9cef6e63405ea9e0d761846b95ef3fb3be57111/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a", size = 289052 }, + { url = "https://files.pythonhosted.org/packages/bd/9f/8bf45a2f1cd4aa401acd271b077989c9267ae8463e7c8b1eb0d3f561b65e/frozenlist-1.5.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee", size = 291719 }, + { url = "https://files.pythonhosted.org/packages/41/d1/1f20fd05a6c42d3868709b7604c9f15538a29e4f734c694c6bcfc3d3b935/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6", size = 267433 }, + { url = "https://files.pythonhosted.org/packages/af/f2/64b73a9bb86f5a89fb55450e97cd5c1f84a862d4ff90d9fd1a73ab0f64a5/frozenlist-1.5.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e", size = 283591 }, + { url = "https://files.pythonhosted.org/packages/29/e2/ffbb1fae55a791fd6c2938dd9ea779509c977435ba3940b9f2e8dc9d5316/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9", size = 273249 }, + { url = "https://files.pythonhosted.org/packages/2e/6e/008136a30798bb63618a114b9321b5971172a5abddff44a100c7edc5ad4f/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039", size = 271075 }, + { url = "https://files.pythonhosted.org/packages/ae/f0/4e71e54a026b06724cec9b6c54f0b13a4e9e298cc8db0f82ec70e151f5ce/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784", size = 285398 }, + { url = "https://files.pythonhosted.org/packages/4d/36/70ec246851478b1c0b59f11ef8ade9c482ff447c1363c2bd5fad45098b12/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631", size = 294445 }, + { url = "https://files.pythonhosted.org/packages/37/e0/47f87544055b3349b633a03c4d94b405956cf2437f4ab46d0928b74b7526/frozenlist-1.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f", size = 280569 }, + { url = "https://files.pythonhosted.org/packages/f9/7c/490133c160fb6b84ed374c266f42800e33b50c3bbab1652764e6e1fc498a/frozenlist-1.5.0-cp312-cp312-win32.whl", hash = "sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8", size = 44721 }, + { url = "https://files.pythonhosted.org/packages/b1/56/4e45136ffc6bdbfa68c29ca56ef53783ef4c2fd395f7cbf99a2624aa9aaa/frozenlist-1.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f", size = 51329 }, + { url = "https://files.pythonhosted.org/packages/da/3b/915f0bca8a7ea04483622e84a9bd90033bab54bdf485479556c74fd5eaf5/frozenlist-1.5.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953", size = 91538 }, + { url = "https://files.pythonhosted.org/packages/c7/d1/a7c98aad7e44afe5306a2b068434a5830f1470675f0e715abb86eb15f15b/frozenlist-1.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0", size = 52849 }, + { url = "https://files.pythonhosted.org/packages/3a/c8/76f23bf9ab15d5f760eb48701909645f686f9c64fbb8982674c241fbef14/frozenlist-1.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2", size = 50583 }, + { url = "https://files.pythonhosted.org/packages/1f/22/462a3dd093d11df623179d7754a3b3269de3b42de2808cddef50ee0f4f48/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f", size = 265636 }, + { url = "https://files.pythonhosted.org/packages/80/cf/e075e407fc2ae7328155a1cd7e22f932773c8073c1fc78016607d19cc3e5/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608", size = 270214 }, + { url = "https://files.pythonhosted.org/packages/a1/58/0642d061d5de779f39c50cbb00df49682832923f3d2ebfb0fedf02d05f7f/frozenlist-1.5.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b", size = 273905 }, + { url = "https://files.pythonhosted.org/packages/ab/66/3fe0f5f8f2add5b4ab7aa4e199f767fd3b55da26e3ca4ce2cc36698e50c4/frozenlist-1.5.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840", size = 250542 }, + { url = "https://files.pythonhosted.org/packages/f6/b8/260791bde9198c87a465224e0e2bb62c4e716f5d198fc3a1dacc4895dbd1/frozenlist-1.5.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439", size = 267026 }, + { url = "https://files.pythonhosted.org/packages/2e/a4/3d24f88c527f08f8d44ade24eaee83b2627793fa62fa07cbb7ff7a2f7d42/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de", size = 257690 }, + { url = "https://files.pythonhosted.org/packages/de/9a/d311d660420b2beeff3459b6626f2ab4fb236d07afbdac034a4371fe696e/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641", size = 253893 }, + { url = "https://files.pythonhosted.org/packages/c6/23/e491aadc25b56eabd0f18c53bb19f3cdc6de30b2129ee0bc39cd387cd560/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e", size = 267006 }, + { url = "https://files.pythonhosted.org/packages/08/c4/ab918ce636a35fb974d13d666dcbe03969592aeca6c3ab3835acff01f79c/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9", size = 276157 }, + { url = "https://files.pythonhosted.org/packages/c0/29/3b7a0bbbbe5a34833ba26f686aabfe982924adbdcafdc294a7a129c31688/frozenlist-1.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03", size = 264642 }, + { url = "https://files.pythonhosted.org/packages/ab/42/0595b3dbffc2e82d7fe658c12d5a5bafcd7516c6bf2d1d1feb5387caa9c1/frozenlist-1.5.0-cp313-cp313-win32.whl", hash = "sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c", size = 44914 }, + { url = "https://files.pythonhosted.org/packages/17/c4/b7db1206a3fea44bf3b838ca61deb6f74424a8a5db1dd53ecb21da669be6/frozenlist-1.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28", size = 51167 }, + { url = "https://files.pythonhosted.org/packages/c6/c8/a5be5b7550c10858fcf9b0ea054baccab474da77d37f1e828ce043a3a5d4/frozenlist-1.5.0-py3-none-any.whl", hash = "sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3", size = 11901 }, +] + +[[package]] +name = "fs" +version = "2.4.16" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appdirs" }, + { name = "setuptools" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5d/a9/af5bfd5a92592c16cdae5c04f68187a309be8a146b528eac3c6e30edbad2/fs-2.4.16.tar.gz", hash = "sha256:ae97c7d51213f4b70b6a958292530289090de3a7e15841e108fbe144f069d313", size = 187441 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/5c/a3d95dc1ec6cdeb032d789b552ecc76effa3557ea9186e1566df6aac18df/fs-2.4.16-py2.py3-none-any.whl", hash = "sha256:660064febbccda264ae0b6bace80a8d1be9e089e0a5eb2427b7d517f9a91545c", size = 135261 }, +] + +[[package]] +name = "fsspec" +version = "2025.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/34/f4/5721faf47b8c499e776bc34c6a8fc17efdf7fdef0b00f398128bc5dcb4ac/fsspec-2025.3.0.tar.gz", hash = "sha256:a935fd1ea872591f2b5148907d103488fc523295e6c64b835cfad8c3eca44972", size = 298491 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/53/eb690efa8513166adef3e0669afd31e95ffde69fb3c52ec2ac7223ed6018/fsspec-2025.3.0-py3-none-any.whl", hash = "sha256:efb87af3efa9103f94ca91a7f8cb7a4df91af9f74fc106c9c7ea0efd7277c1b3", size = 193615 }, +] + +[[package]] +name = "ftfy" +version = "4.4.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "html5lib" }, + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/5d/9385540977b00df1f3a0c0f07b7e6c15b5e7a3109d7f6ae78a0a764dab22/ftfy-4.4.3.tar.gz", hash = "sha256:3c0066db64a98436e751e56414f03f1cdea54f29364c0632c141c36cca6a5d94", size = 50530 } + +[[package]] +name = "furo" +version = "2024.8.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "pygments" }, + { name = "sphinx" }, + { name = "sphinx-basic-ng" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a0/e2/d351d69a9a9e4badb4a5be062c2d0e87bd9e6c23b5e57337fef14bef34c8/furo-2024.8.6.tar.gz", hash = "sha256:b63e4cee8abfc3136d3bc03a3d45a76a850bada4d6374d24c1716b0e01394a01", size = 1661506 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/48/e791a7ed487dbb9729ef32bb5d1af16693d8925f4366befef54119b2e576/furo-2024.8.6-py3-none-any.whl", hash = "sha256:6cd97c58b47813d3619e63e9081169880fbe331f0ca883c871ff1f3f11814f5c", size = 341333 }, +] + +[[package]] +name = "future" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/b2/4140c69c6a66432916b26158687e821ba631a4c9273c474343badf84d3ba/future-1.0.0.tar.gz", hash = "sha256:bd2968309307861edae1458a4f8a4f3598c03be43b97521076aebf5d94c07b05", size = 1228490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl", hash = "sha256:929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216", size = 491326 }, +] + +[[package]] +name = "geojson" +version = "3.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/5a/33e761df75c732fcea94aaf01f993d823138581d10c91133da58bc231e63/geojson-3.2.0.tar.gz", hash = "sha256:b860baba1e8c6f71f8f5f6e3949a694daccf40820fa8f138b3f712bd85804903", size = 24574 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/a7fa2d650602731c90e0a86279841b4586e14228199e8c09165ba4863e29/geojson-3.2.0-py3-none-any.whl", hash = "sha256:69d14156469e13c79479672eafae7b37e2dcd19bdfd77b53f74fa8fe29910b52", size = 15040 }, +] + +[[package]] +name = "ghp-import" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, +] + +[[package]] +name = "github3-py" +version = "4.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyjwt", extra = ["crypto"] }, + { name = "python-dateutil" }, + { name = "requests" }, + { name = "uritemplate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/91/603bcaf8cd1b3927de64bf56c3a8915f6653ea7281919140c5bcff2bfe7b/github3.py-4.0.1.tar.gz", hash = "sha256:30d571076753efc389edc7f9aaef338a4fcb24b54d8968d5f39b1342f45ddd36", size = 36214038 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/ad/2394d4fb542574678b0ba342daf734d4d811768da3c2ee0c84d509dcb26c/github3.py-4.0.1-py3-none-any.whl", hash = "sha256:a89af7de25650612d1da2f0609622bcdeb07ee8a45a1c06b2d16a05e4234e753", size = 151800 }, +] + +[[package]] +name = "greenlet" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/ff/df5fede753cc10f6a5be0931204ea30c35fa2f2ea7a35b25bdaf4fe40e46/greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467", size = 186022 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/ec/bad1ac26764d26aa1353216fcbfa4670050f66d445448aafa227f8b16e80/greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d", size = 274260 }, + { url = "https://files.pythonhosted.org/packages/66/d4/c8c04958870f482459ab5956c2942c4ec35cac7fe245527f1039837c17a9/greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79", size = 649064 }, + { url = "https://files.pythonhosted.org/packages/51/41/467b12a8c7c1303d20abcca145db2be4e6cd50a951fa30af48b6ec607581/greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa", size = 663420 }, + { url = "https://files.pythonhosted.org/packages/27/8f/2a93cd9b1e7107d5c7b3b7816eeadcac2ebcaf6d6513df9abaf0334777f6/greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441", size = 658035 }, + { url = "https://files.pythonhosted.org/packages/57/5c/7c6f50cb12be092e1dccb2599be5a942c3416dbcfb76efcf54b3f8be4d8d/greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36", size = 660105 }, + { url = "https://files.pythonhosted.org/packages/f1/66/033e58a50fd9ec9df00a8671c74f1f3a320564c6415a4ed82a1c651654ba/greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9", size = 613077 }, + { url = "https://files.pythonhosted.org/packages/19/c5/36384a06f748044d06bdd8776e231fadf92fc896bd12cb1c9f5a1bda9578/greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0", size = 1135975 }, + { url = "https://files.pythonhosted.org/packages/38/f9/c0a0eb61bdf808d23266ecf1d63309f0e1471f284300ce6dac0ae1231881/greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942", size = 1163955 }, + { url = "https://files.pythonhosted.org/packages/43/21/a5d9df1d21514883333fc86584c07c2b49ba7c602e670b174bd73cfc9c7f/greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01", size = 299655 }, + { url = "https://files.pythonhosted.org/packages/f3/57/0db4940cd7bb461365ca8d6fd53e68254c9dbbcc2b452e69d0d41f10a85e/greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1", size = 272990 }, + { url = "https://files.pythonhosted.org/packages/1c/ec/423d113c9f74e5e402e175b157203e9102feeb7088cee844d735b28ef963/greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff", size = 649175 }, + { url = "https://files.pythonhosted.org/packages/a9/46/ddbd2db9ff209186b7b7c621d1432e2f21714adc988703dbdd0e65155c77/greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a", size = 663425 }, + { url = "https://files.pythonhosted.org/packages/bc/f9/9c82d6b2b04aa37e38e74f0c429aece5eeb02bab6e3b98e7db89b23d94c6/greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e", size = 657736 }, + { url = "https://files.pythonhosted.org/packages/d9/42/b87bc2a81e3a62c3de2b0d550bf91a86939442b7ff85abb94eec3fc0e6aa/greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4", size = 660347 }, + { url = "https://files.pythonhosted.org/packages/37/fa/71599c3fd06336cdc3eac52e6871cfebab4d9d70674a9a9e7a482c318e99/greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e", size = 615583 }, + { url = "https://files.pythonhosted.org/packages/4e/96/e9ef85de031703ee7a4483489b40cf307f93c1824a02e903106f2ea315fe/greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1", size = 1133039 }, + { url = "https://files.pythonhosted.org/packages/87/76/b2b6362accd69f2d1889db61a18c94bc743e961e3cab344c2effaa4b4a25/greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c", size = 1160716 }, + { url = "https://files.pythonhosted.org/packages/1f/1b/54336d876186920e185066d8c3024ad55f21d7cc3683c856127ddb7b13ce/greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761", size = 299490 }, + { url = "https://files.pythonhosted.org/packages/5f/17/bea55bf36990e1638a2af5ba10c1640273ef20f627962cf97107f1e5d637/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011", size = 643731 }, + { url = "https://files.pythonhosted.org/packages/78/d2/aa3d2157f9ab742a08e0fd8f77d4699f37c22adfbfeb0c610a186b5f75e0/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13", size = 649304 }, + { url = "https://files.pythonhosted.org/packages/f1/8e/d0aeffe69e53ccff5a28fa86f07ad1d2d2d6537a9506229431a2a02e2f15/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475", size = 646537 }, + { url = "https://files.pythonhosted.org/packages/05/79/e15408220bbb989469c8871062c97c6c9136770657ba779711b90870d867/greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b", size = 642506 }, + { url = "https://files.pythonhosted.org/packages/18/87/470e01a940307796f1d25f8167b551a968540fbe0551c0ebb853cb527dd6/greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822", size = 602753 }, + { url = "https://files.pythonhosted.org/packages/e2/72/576815ba674eddc3c25028238f74d7b8068902b3968cbe456771b166455e/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01", size = 1122731 }, + { url = "https://files.pythonhosted.org/packages/ac/38/08cc303ddddc4b3d7c628c3039a61a3aae36c241ed01393d00c2fd663473/greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6", size = 1142112 }, +] + +[[package]] +name = "halo" +version = "0.0.31" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama" }, + { name = "log-symbols" }, + { name = "six" }, + { name = "spinners" }, + { name = "termcolor" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ee/48/d53580d30b1fabf25d0d1fcc3f5b26d08d2ac75a1890ff6d262f9f027436/halo-0.0.31.tar.gz", hash = "sha256:7b67a3521ee91d53b7152d4ee3452811e1d2a6321975137762eb3d70063cc9d6", size = 11666 } + +[[package]] +name = "html5lib" +version = "1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/b6/b55c3f49042f1df3dcd422b7f224f939892ee94f22abcf503a9b7339eaf2/html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f", size = 272215 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/dd/a834df6482147d48e225a49515aabc28974ad5a4ca3215c18a882565b028/html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d", size = 112173 }, +] + +[[package]] +name = "humanize" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/84/ae8e64a6ffe3291105e9688f4e28fa65eba7924e0fe6053d85ca00556385/humanize-4.12.2.tar.gz", hash = "sha256:ce0715740e9caacc982bb89098182cf8ded3552693a433311c6a4ce6f4e12a2c", size = 80871 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/c7/6f89082f619c76165feb633446bd0fee32b0e0cbad00d22480e5aea26ade/humanize-4.12.2-py3-none-any.whl", hash = "sha256:e4e44dced598b7e03487f3b1c6fd5b1146c30ea55a110e71d5d4bca3e094259e", size = 128305 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "idutils" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "isbnlib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/05/92/a157135bb6fd9210e09f85ed57c8e3aaa72dc676e4225f8cb7328af941fe/idutils-1.4.2.tar.gz", hash = "sha256:77f5cad0df56dcf7c9368ecbb0f6b1f418340028949e84640731a88e4159eadd", size = 31530 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/4b/e745a16a7b8477713d9f2c0f9c44580870998f0add8990c3243eb31259d3/idutils-1.4.2-py2.py3-none-any.whl", hash = "sha256:bcd1c88dca6d8d191649aea4e6bebc90258e755f1d5f1770a7ccc736836351a6", size = 21359 }, +] + +[[package]] +name = "imagesize" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/84/62473fb57d61e31fef6e36d64a179c8781605429fd927b5dd608c997be31/imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a", size = 1280026 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b", size = 8769 }, +] + +[[package]] +name = "importlib-metadata" +version = "7.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/72/33d1bb4be61f1327d3cd76fc41e2d001a6b748a0648d944c646643f123fe/importlib_metadata-7.2.1.tar.gz", hash = "sha256:509ecb2ab77071db5137c655e24ceb3eee66e7bbc6574165d0d114d9fc4bbe68", size = 52834 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/28/7daa5f782f5e2cbbec00556bf23ca106023470ebab3ae1040ee778269af1/importlib_metadata-7.2.1-py3-none-any.whl", hash = "sha256:ffef94b0b66046dd8ea2d619b701fe978d9264d38f3998bc4c27ec3b146a87c8", size = 25037 }, +] + +[[package]] +name = "importlib-resources" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461 }, +] + +[[package]] +name = "infinity" +version = "1.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/55/09840b5789d7bda972ae9f2ecd94d2df06b5aeac193505013fbaf6ddc648/infinity-1.5.tar.gz", hash = "sha256:8daa7c15ce2100fdccfde212337e0cd5cf085869f54dc2634b6c30d61461ecda", size = 5378 } + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, +] + +[[package]] +name = "intervals" +version = "0.9.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "infinity" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/24/eb/2d36474125c41b8fbb1c052a329b38fd726ef4c08529564518adcc5836e5/intervals-0.9.2.tar.gz", hash = "sha256:c7ee568c583ca857c0d91af6d90ee5e0e8adef3f5646d0076bfb87305ae43090", size = 16536 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/6a/71aca90b7ac1da04c9dfafac0d1cd5311aed2faa4a96aa2521eb23f095d6/intervals-0.9.2-py3-none-any.whl", hash = "sha256:7c963abf7b4be2be40322b84e036af5d4ebec0945b5d29df7da1a638b3fea768", size = 8512 }, +] + +[[package]] +name = "invenio-access" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-accounts" }, + { name = "invenio-admin" }, + { name = "invenio-base" }, + { name = "invenio-i18n" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/ff/add4c66784db8f6c1ebb2a7c96aad1a12ba4ac3c87333c84c3fbd37202fc/invenio-access-2.1.0.tar.gz", hash = "sha256:27f4037e0482802ec8691ccb131f1b1007c622cb39a160d9797c9bd512b418e5", size = 59427 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/1f/6ce165814ea6bb58fae2bbdfd09feb41f43454be182b483ffc460b47cc21/invenio_access-2.1.0-py2.py3-none-any.whl", hash = "sha256:5304393066cc53ed62c8905bd605637c85c4000b0f9854c4b80d7a36cca63c77", size = 102488 }, +] + +[[package]] +name = "invenio-accounts" +version = "5.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "flask-kvsession-invenio" }, + { name = "flask-security-invenio" }, + { name = "invenio-celery" }, + { name = "invenio-i18n" }, + { name = "invenio-mail" }, + { name = "invenio-rest" }, + { name = "invenio-theme" }, + { name = "maxminddb-geolite2" }, + { name = "pyjwt" }, + { name = "simplekv" }, + { name = "ua-parser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/0a/252df3e3f568027456b778062af4ecf60f522d4ab2339e7f4c2500364167/invenio_accounts-5.1.7.tar.gz", hash = "sha256:a715360207f8a284e5182c29ab48e4e5d1aa7180d62b548ff300772adbfa97a5", size = 167048 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/2c/8bafe869b7a6ff697adc81d46b237a5e00ec3f3cffa61515688629b08a49/invenio_accounts-5.1.7-py2.py3-none-any.whl", hash = "sha256:279a1e08e4abebc790c2a2977b9ab1f051880bbc47d4823be058cc60a3e505c7", size = 190144 }, +] + +[[package]] +name = "invenio-admin" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask-admin" }, + { name = "flask-menu" }, + { name = "flask-principal" }, + { name = "invenio-accounts" }, + { name = "invenio-base" }, + { name = "invenio-db" }, + { name = "invenio-i18n" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c1/33/6d1710dd906ff6094e0516d5bb6f2db15c566bc9cc561a32f40025568a05/invenio-admin-1.4.0.tar.gz", hash = "sha256:2e257df24e300d992799d377a3ca7bbf64e7c7002a9b8890ee56667a2209d76a", size = 27977 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/f2/9021bda37816af7d2e8aa757d4db89642324f55985d5e36ad09bc994db7a/invenio_admin-1.4.0-py2.py3-none-any.whl", hash = "sha256:2c1138d5664c8d6e76bfb7378960b1945fb4af3dda325515aab68f33e1e5f4ae", size = 19125 }, +] + +[[package]] +name = "invenio-administration" +version = "2.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask-menu" }, + { name = "flask-principal" }, + { name = "invenio-accounts" }, + { name = "invenio-base" }, + { name = "invenio-db", extra = ["mysql", "postgresql"] }, + { name = "invenio-records-resources" }, + { name = "invenio-search-ui" }, + { name = "invenio-theme" }, + { name = "invenio-vocabularies" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b4/b7/511e3cd2f9767d18369dbbd5439432e59fac186834af5574485656359e7d/invenio-administration-2.2.4.tar.gz", hash = "sha256:3d1b4a71dc4529c601ab8ac778c68a22174ba3f34572bada1e0b1d3603d8e2c7", size = 150434 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/82/1e33bb01f316e79cf77c713fce17577b653aadbf9634ed4f337cd4b756ad/invenio_administration-2.2.4-py2.py3-none-any.whl", hash = "sha256:ee69aa7d64c6186d010be298f98aaf4e90fa45b76c445c8cfd20c42d7c2ea693", size = 312577 }, +] + +[[package]] +name = "invenio-app" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask-limiter" }, + { name = "flask-shell-ipython" }, + { name = "flask-talisman" }, + { name = "invenio-base" }, + { name = "invenio-cache" }, + { name = "invenio-celery" }, + { name = "invenio-config" }, + { name = "uritools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/c1/d66df74c0e91e3d3e306d16afaf24d8297e16111cb25dbe205b68ab601cd/invenio_app-1.5.1.tar.gz", hash = "sha256:e22a3c08ffe57b992eecf05346bb3346571fca492babae2b065a089e73df5bfb", size = 33429 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/b0/754c8aa831e77c61d709223ed0d1c0a02a99642bb7d7f15dd82a0431f540/invenio_app-1.5.1-py2.py3-none-any.whl", hash = "sha256:5350b549203a813d07dfb383d672d709abb48463482e0780a5139fe44e935b3c", size = 19010 }, +] + +[[package]] +name = "invenio-app-rdm" +version = "12.0.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cairosvg" }, + { name = "flask" }, + { name = "invenio-access" }, + { name = "invenio-accounts" }, + { name = "invenio-admin" }, + { name = "invenio-app" }, + { name = "invenio-assets" }, + { name = "invenio-banners" }, + { name = "invenio-base" }, + { name = "invenio-cache" }, + { name = "invenio-celery" }, + { name = "invenio-communities" }, + { name = "invenio-config" }, + { name = "invenio-db", extra = ["mysql", "postgresql"] }, + { name = "invenio-files-rest" }, + { name = "invenio-formatter" }, + { name = "invenio-i18n" }, + { name = "invenio-indexer" }, + { name = "invenio-jsonschemas" }, + { name = "invenio-logging" }, + { name = "invenio-mail" }, + { name = "invenio-oaiserver" }, + { name = "invenio-oauth2server" }, + { name = "invenio-oauthclient" }, + { name = "invenio-pages" }, + { name = "invenio-pidstore" }, + { name = "invenio-previewer" }, + { name = "invenio-rdm-records" }, + { name = "invenio-records" }, + { name = "invenio-records-files" }, + { name = "invenio-records-rest" }, + { name = "invenio-records-ui" }, + { name = "invenio-rest" }, + { name = "invenio-search-ui" }, + { name = "invenio-theme" }, + { name = "invenio-userprofiles" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/2c/2b1a6aa1928d2c1ee511fe1e98842a0b60375ce028bfc97e06ba232c339d/invenio_app_rdm-12.0.14.tar.gz", hash = "sha256:aac25f3cfdd6a5f87efeae17f59101a3680d4d9d70ea7cb887351cdf0611a9eb", size = 472156 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/0a/9119938583a32dbe6e462b6ddfa097d66385e92068f95e3fc29b33b7c0d5/invenio_app_rdm-12.0.14-py2.py3-none-any.whl", hash = "sha256:35d41fe9219b3fdb407abcdfa3b2455fdb0889862208985df78746ce894db9e8", size = 866157 }, +] + +[package.optional-dependencies] +opensearch2 = [ + { name = "invenio-search", extra = ["opensearch2"] }, +] + +[[package]] +name = "invenio-assets" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask-collect-invenio" }, + { name = "flask-webpackext" }, + { name = "invenio-base" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/d2/aba7729d8a6a7baeab8184e4ddeed0bf58d4497edeeb492875a873c651dc/invenio_assets-3.1.0.tar.gz", hash = "sha256:0e5d86363a7088353ca24dce63df87278d82c98ada80db79222530cdac19aa6c", size = 28937 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/2e/c44eec202feb40c2b400d80b38f314595b11685ac935b91c12a1bb353907/invenio_assets-3.1.0-py2.py3-none-any.whl", hash = "sha256:0641235db3687941f486f8cb2c0a59186130c2db79b7ec459ef10e6e736c36bd", size = 16844 }, +] + +[[package]] +name = "invenio-banners" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-administration" }, + { name = "invenio-i18n" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/f9/78807a1ceef211878e27f65f1380d98b0623fa68cd57b616946aa5472449/invenio_banners-3.3.0.tar.gz", hash = "sha256:4addbe40a598464f748d4ca7a07188404798dfab6a24b0e3da920b10de245735", size = 44324 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/d1/8c8f66f154a8ff02332f6669f9a2802131df1488c5d52064bc1e89675038/invenio_banners-3.3.0-py2.py3-none-any.whl", hash = "sha256:88f47a8f72c85aa271c8434784cd6ccb92d55d2863d28804398a2d4f9bddfaf0", size = 98939 }, +] + +[[package]] +name = "invenio-base" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "flask" }, + { name = "importlib-metadata" }, + { name = "importlib-resources" }, + { name = "itsdangerous" }, + { name = "markupsafe" }, + { name = "watchdog" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/13/59/c007ffcd07409685c9df5d94165afb7abcbda2978f87a3f0d85f9e436cfe/invenio-base-1.4.0.tar.gz", hash = "sha256:4716a9874bd246d68cca2ddd49faa55e9c280bb68fc399d839d902982647784e", size = 28645 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/0d/cf6d3cd2a3ade4c7ae13f6bfbb813ee58d44390bc513a6b0e355a1859572/invenio_base-1.4.0-py2.py3-none-any.whl", hash = "sha256:c18ad980c5f35079935a02d27e4307da6e7b6f5722cabcb88e9128e4c47a36e8", size = 15786 }, +] + +[[package]] +name = "invenio-cache" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask-caching" }, + { name = "invenio-base" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/13/42/2f15b6520dd7125cb67864ac6073edb9304b7593f9af867d64db1d0ea831/invenio_cache-1.3.1.tar.gz", hash = "sha256:6c53c84c71390daa7348d81cd98217a22437279330049cbfb44d633b54f6b2a5", size = 23311 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/76/60f18689cb006aa2bd3c4a9311dc47a9068d4ea3a2ff04bcdd10c8008cf7/invenio_cache-1.3.1-py2.py3-none-any.whl", hash = "sha256:df11bbd387c11450952c7ba059353a9ceb8a678cdddeaba6eae8dc6fab8c1ffb", size = 11933 }, +] + +[[package]] +name = "invenio-celery" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "celery" }, + { name = "flask-celeryext" }, + { name = "invenio-base" }, + { name = "msgpack" }, + { name = "redis" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/3a/43d5f37b8519ae71cefa8369aedaf1761bed1a464b157d2ec856f29456da/invenio-celery-1.3.2.tar.gz", hash = "sha256:f8ead8ea0c94fc0fc7cc905e4280c46e57a44d1cf0e299a06e01f12952772466", size = 19605 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/91/0c52739f5e7afb3014c7c7182c373d72fc71344f0590602f12b161ec9d35/invenio_celery-1.3.2-py2.py3-none-any.whl", hash = "sha256:3698d61fcca5f3fc2f643939df85084bb5849b4af0a54415c7f6eecfd8b9f14c", size = 8029 }, +] + +[[package]] +name = "invenio-cli" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "click" }, + { name = "click-default-group" }, + { name = "cookiecutter" }, + { name = "docker" }, + { name = "pipenv" }, + { name = "pipfile" }, + { name = "pynpm" }, + { name = "pyyaml" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a0/33/1bb340aae7fa2e16cfc21a03f38cd8d3cf1a99b0b6eb68825f0137c9d483/invenio_cli-1.6.0.tar.gz", hash = "sha256:87bc86a28654f0937277b6128c8bd778d9c4ed7db30d982f5b48c144c657a585", size = 50491 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/b5/e4be4c31e9844de471f9e54e7040d75161a394739dfb2ba8117985fdcc77/invenio_cli-1.6.0-py2.py3-none-any.whl", hash = "sha256:ce70184772928bfcca9e24b79e894775716cf4cb545b4931caece3e429280bff", size = 49801 }, +] + +[[package]] +name = "invenio-communities" +version = "13.0.3" +source = { editable = "site/kcworks/dependencies/invenio-communities" } +dependencies = [ + { name = "invenio-administration" }, + { name = "invenio-oaiserver" }, + { name = "invenio-requests" }, + { name = "invenio-search-ui" }, + { name = "invenio-vocabularies" }, +] + +[package.metadata] +requires-dist = [ + { name = "faker", marker = "extra == 'tests'", specifier = ">=2.0.3" }, + { name = "invenio-administration", specifier = ">=2.0.0,<3.0.0" }, + { name = "invenio-app", marker = "extra == 'tests'", specifier = ">=1.4.0,<2.0.0" }, + { name = "invenio-db", extras = ["mysql", "postgresql"], marker = "extra == 'tests'", specifier = ">=1.0.14,<2.0.0" }, + { name = "invenio-oaiserver", specifier = ">=2.2.0,<3.0.0" }, + { name = "invenio-requests", specifier = ">=4.0.0,<5.0.0" }, + { name = "invenio-search", extras = ["opensearch1"], marker = "extra == 'opensearch1'", specifier = ">=2.1.0,<3.0.0" }, + { name = "invenio-search", extras = ["opensearch2"], marker = "extra == 'opensearch2'", specifier = ">=2.1.0,<3.0.0" }, + { name = "invenio-search-ui", specifier = ">=2.4.0,<3.0.0" }, + { name = "invenio-vocabularies", specifier = ">=3.0.0,<4.0.0" }, + { name = "pytest-black-ng", marker = "extra == 'tests'", specifier = ">=0.4.0" }, + { name = "pytest-invenio", marker = "extra == 'tests'", specifier = ">=2.1.4,<3.0.0" }, + { name = "sphinx", marker = "extra == 'tests'", specifier = ">=4.5.0" }, +] + +[[package]] +name = "invenio-config" +version = "1.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/55/3e03ef60ed8d44b70d67a6cf22067de8425030ec0e9cd86aaacf7f6c5478/invenio-config-1.0.4.tar.gz", hash = "sha256:0ae1e7c6eb838f594d7ee78061203c6bc760aabf1993884bddd776899041cc11", size = 19651 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/6a/7f56b8ed37be54853693985e2195bc45d7ea8cc23254752848938d124387/invenio_config-1.0.4-py2.py3-none-any.whl", hash = "sha256:e14fb7840afb71a913603391c48da3d6604cbcf6c458391c97eda167f06e1dcc", size = 10917 }, +] + +[[package]] +name = "invenio-db" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "alembic" }, + { name = "flask-alembic" }, + { name = "flask-sqlalchemy" }, + { name = "invenio-base" }, + { name = "sqlalchemy", extra = ["asyncio"] }, + { name = "sqlalchemy-continuum" }, + { name = "sqlalchemy-utils" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/36/42/d6c5541d6855a9711c49b9cd5fc219c6e168fca0d85a230c4c1413f4856e/invenio-db-1.3.1.tar.gz", hash = "sha256:275307e6a6980140f05ce765f54e0efc5f91a09cf206bdeecea874251f3aafbb", size = 35682 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/c8/db4f7890c871b944b5ba931be925597ad64c276d1a33237f5160ed58b0c8/invenio_db-1.3.1-py2.py3-none-any.whl", hash = "sha256:9f07739b8854185b594ea7917dfb8443ffb309981c60d2f660da3e2c12fe7a2d", size = 18939 }, +] + +[package.optional-dependencies] +mysql = [ + { name = "pymysql" }, +] +postgresql = [ + { name = "psycopg2-binary" }, +] + +[[package]] +name = "invenio-drafts-resources" +version = "3.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-i18n" }, + { name = "invenio-records-resources" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/d1/25982bf6b7b2badcc32030e6f92de19ce403b0f5d2bbe7830de3b33196fe/invenio-drafts-resources-3.2.0.tar.gz", hash = "sha256:6f6e31dfe650573839dda5d98b5f79395e46d58f14d3be4972b6d422c15ca4de", size = 72850 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/36/0105c7a4885cae8482573a78f3473a6a92c69801a8490ecacb84a3fbf61a/invenio_drafts_resources-3.2.0-py2.py3-none-any.whl", hash = "sha256:5216f8e7ab3040ad7834965ed5875f8e360a6175872acbdc97a1df43659a627c", size = 124304 }, +] + +[[package]] +name = "invenio-files-rest" +version = "2.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click-default-group" }, + { name = "flask-wtf" }, + { name = "fs" }, + { name = "invenio-accounts" }, + { name = "invenio-i18n" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1b/d1/da5d18d02bae698fa5cc1e1fde27d4e8ffc02f3e59b2888d5193fa270a0e/invenio_files_rest-2.2.4.tar.gz", hash = "sha256:59569863adc1bf8a21a0205e9fa4ad9633808edcf6d13226557baa3e5bea0188", size = 183412 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/b8/8a11174e7f62e29451b598f9e313aedd554fbc830cac2080f5c908560433/invenio_files_rest-2.2.4-py2.py3-none-any.whl", hash = "sha256:3d0e6d464e1f51e55ad08f5ac42d969c40cfbd73c02852b9537a55e6541a63d1", size = 160004 }, +] + +[[package]] +name = "invenio-formatter" +version = "2.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, + { name = "bleach" }, + { name = "invenio-base" }, + { name = "invenio-i18n" }, + { name = "pillow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/7e/195619dc46ca75aff5ccd426ca4eceb49d6cf589b9c1507352667fe96638/invenio_formatter-2.0.4.tar.gz", hash = "sha256:7aee94ec01c3cabc6da57825df3352a12f8b91a2e69c7599bdf001febf6bed05", size = 38463 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/f1/3f9d9794ba2a655c9f792edf020573bfe81d307e95ec9fcf6033bab3f82d/invenio_formatter-2.0.4-py2.py3-none-any.whl", hash = "sha256:9323dea423927829a332cee7ae1d4c0d127a51709cec612f17da8d5cb1a7f711", size = 86092 }, +] + +[[package]] +name = "invenio-github" +version = "1.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "email-validator" }, + { name = "flask" }, + { name = "flask-menu" }, + { name = "github3-py" }, + { name = "humanize" }, + { name = "invenio-accounts" }, + { name = "invenio-assets" }, + { name = "invenio-celery" }, + { name = "invenio-db" }, + { name = "invenio-formatter" }, + { name = "invenio-i18n" }, + { name = "invenio-oauth2server" }, + { name = "invenio-oauthclient" }, + { name = "invenio-pidstore" }, + { name = "invenio-records-resources" }, + { name = "invenio-records-rest" }, + { name = "invenio-webhooks" }, + { name = "mistune" }, + { name = "pyyaml" }, + { name = "six" }, + { name = "uritemplate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5c/98/a2a1b3a771cc8526d82d9177832007693805598d0cd97bb16e0f8eb3dfe8/invenio-github-1.5.2.tar.gz", hash = "sha256:77c38f1a6158f8ba1eab9431f6903849385331dc757184273cdcf8bba07a4a11", size = 51043 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/59/978a024009475a0561816c8545c34e589c2e25924922ed92af009e8db2f2/invenio_github-1.5.2-py2.py3-none-any.whl", hash = "sha256:26cf1efaa1961072325cb5ced42377fb33d88f8a65c4bbe72e74af133060974a", size = 80040 }, +] + +[[package]] +name = "invenio-group-collections-kcworks" +version = "0.1.0.dev1" +source = { editable = "site/kcworks/dependencies/invenio-group-collections-kcworks" } +dependencies = [ + { name = "alembic" }, + { name = "click" }, + { name = "docker-services-cli" }, + { name = "invenio-administration" }, + { name = "invenio-app-rdm", extra = ["opensearch2"] }, + { name = "invenio-cli" }, + { name = "invenio-communities" }, + { name = "opensearch-dsl" }, + { name = "psycopg2-binary" }, + { name = "unidecode" }, +] + +[package.metadata] +requires-dist = [ + { name = "alembic" }, + { name = "check-manifest", marker = "extra == 'dev'" }, + { name = "click", specifier = ">=7.0" }, + { name = "docker-services-cli" }, + { name = "invenio-administration" }, + { name = "invenio-app-rdm", extras = ["opensearch2"], specifier = "<13.0.0" }, + { name = "invenio-cli" }, + { name = "invenio-communities" }, + { name = "opensearch-dsl" }, + { name = "pip-tools", marker = "extra == 'dev'" }, + { name = "psycopg2-binary" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.3.2" }, + { name = "pytest", marker = "extra == 'tests'", specifier = ">=7.3.2" }, + { name = "pytest-invenio", marker = "extra == 'dev'" }, + { name = "pytest-invenio", marker = "extra == 'tests'" }, + { name = "pytest-runner", marker = "extra == 'dev'" }, + { name = "pytest-runner", marker = "extra == 'tests'" }, + { name = "requests-mock", marker = "extra == 'dev'" }, + { name = "requests-mock", marker = "extra == 'tests'" }, + { name = "unidecode" }, +] + +[[package]] +name = "invenio-i18n" +version = "2.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "flask-babel" }, + { name = "invenio-base" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8d/19/5638b24fb8ab8891b2f5520be2a93c26355a49b530e5242ababafd96349d/invenio-i18n-2.1.2.tar.gz", hash = "sha256:6f39224abb3e26c32d670ba1828f4d147acc0e8cca0671ce66862a5264ce75ef", size = 40154 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/3e/016d1ec3aa0f3ae197940104351d027fd64c3419eb45c87761f84b85647b/invenio_i18n-2.1.2-py2.py3-none-any.whl", hash = "sha256:ca66b3d226f963d765c71c7fcbbf7ff2f5977db3cd0b84893073bda4655f99a9", size = 65569 }, +] + +[[package]] +name = "invenio-indexer" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-db" }, + { name = "invenio-pidstore" }, + { name = "invenio-records" }, + { name = "pytz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/48/bdd3c316ce041f7a42cbacfa55900586bced223ecb345d667709829c0e36/invenio-indexer-2.4.0.tar.gz", hash = "sha256:f11c752d7b3cffe4db6a659106e48316963b4771505e0a72375339eea1be7ba0", size = 37204 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/d0/edda3f40ddad6a6f44f9636fc42d6923fdd564c3aba59b0c52b2a50d02f8/invenio_indexer-2.4.0-py2.py3-none-any.whl", hash = "sha256:99d6a7edb63025cc439d87cf18789c89321e23ca8e34aae9775243e9a6402d79", size = 20534 }, +] + +[[package]] +name = "invenio-jsonschemas" +version = "1.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "importlib-resources" }, + { name = "invenio-base" }, + { name = "jsonref" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/15/c58927325a7ddd14a6f54f673ddcf431ee2280a1c84a6a7c17877d2f0089/invenio_jsonschemas-1.1.5.tar.gz", hash = "sha256:dedec03de1eb6798ee54d684b0188a9a616f11a508054463e158c473cbcaea07", size = 28754 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/b1/9bf638aa03233108ece8c3207e7455ba5bef70d3fef1239b45a8fc5a1f27/invenio_jsonschemas-1.1.5-py2.py3-none-any.whl", hash = "sha256:0ef364acbfb74d382ae83904f3d5390faa893902f25e88110ff18275ab36863b", size = 16499 }, +] + +[[package]] +name = "invenio-logging" +version = "2.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-celery" }, + { name = "invenio-db" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/db/568ba88c49b18c5cdcf35061fa1db13bfd98a4a0e28c4e291d9925c8cedf/invenio_logging-2.1.5.tar.gz", hash = "sha256:1e5efc411c9708e74ed50b7022c8c064c389795639f8028323781e7df3b2eae0", size = 22836 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/30/75f8fe821b88c23280952d2d6190b5b04e9aaa6b204f33a7e30d70f24b7c/invenio_logging-2.1.5-py2.py3-none-any.whl", hash = "sha256:2c1eba52fe925b099089883729bd9e834ba6dffbccdd11555899e5d62e67a8ab", size = 11759 }, +] + +[package.optional-dependencies] +sentry = [ + { name = "sentry-sdk", extra = ["flask"] }, +] + +[[package]] +name = "invenio-mail" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "flask-mail" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ea/21/7a74e9665f3410927f7bcb0b69a4fb9fb16386d94a7efd9b1b3be4523477/invenio_mail-2.2.1.tar.gz", hash = "sha256:893d57c34e2591cf08cb458cff005ec0c67868708fb1fef144ac589dca28ff1d", size = 26603 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/5f/721131abde547132b4a4f1bd1c55cfe200e4b315f83ed9493d8f2100bbcc/invenio_mail-2.2.1-py2.py3-none-any.whl", hash = "sha256:80f5446880421189cf69e80cf1a654f651d3f597cdd8411ee136550e565dcdb0", size = 9806 }, +] + +[[package]] +name = "invenio-modular-deposit-form" +version = "0.3.3.dev1" +source = { editable = "site/kcworks/dependencies/invenio-modular-deposit-form" } +dependencies = [ + { name = "invenio-app-rdm" }, +] + +[package.metadata] +requires-dist = [ + { name = "invenio-app-rdm", specifier = ">=12.0.0,<13.0.0" }, + { name = "pytest-black", marker = "extra == 'tests'", specifier = ">=0.3.0" }, + { name = "pytest-invenio", marker = "extra == 'tests'", specifier = ">=2.1.0,<3.0.0" }, + { name = "sphinx", marker = "extra == 'dev'", specifier = ">=4.5.0" }, +] + +[[package]] +name = "invenio-modular-detail-page" +version = "0.3.1.dev1" +source = { editable = "site/kcworks/dependencies/invenio-modular-detail-page" } +dependencies = [ + { name = "invenio-app-rdm" }, +] + +[package.metadata] +requires-dist = [ + { name = "bumpver", marker = "extra == 'dev'" }, + { name = "check-manifest", marker = "extra == 'dev'" }, + { name = "coverage", marker = "extra == 'test'" }, + { name = "docker-services-cli", marker = "extra == 'test'" }, + { name = "invenio-app-rdm", specifier = ">=12.0.0,<13.0.0" }, + { name = "ipykernel", marker = "extra == 'dev'" }, + { name = "pip-tools", marker = "extra == 'dev'" }, + { name = "pytest-black", marker = "extra == 'test'" }, + { name = "pytest-invenio", marker = "extra == 'test'" }, + { name = "selenium", marker = "extra == 'test'" }, + { name = "sphinx", marker = "extra == 'test'", specifier = ">=4.5.0" }, +] + +[[package]] +name = "invenio-notifications" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-base" }, + { name = "invenio-i18n" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/bc/5696027cb17f0ab86199215f89913e982d1f5c03de2ee3e7d07c2bdab578/invenio_notifications-0.6.1.tar.gz", hash = "sha256:80b0ea60f059634ce58fa51c519d13bd822875a5f285c83f652d2b1a97049f83", size = 24023 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/03/be12c5d7bcfddc28734839f7dab6aeb48e851c98ebd1d59c6b0469ed3e0d/invenio_notifications-0.6.1-py2.py3-none-any.whl", hash = "sha256:68a6282795284300e00bbf22e9e05e08158ee856c2aef3e7c5022594625d9deb", size = 20099 }, +] + +[[package]] +name = "invenio-oaiserver" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, + { name = "dojson" }, + { name = "invenio-base" }, + { name = "invenio-i18n" }, + { name = "invenio-pidstore" }, + { name = "invenio-records" }, + { name = "invenio-rest" }, + { name = "lxml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/f4/97d23c4124f8bdea0da9714cc54c0bd1ea28e6ab49cc4ff0a9407d4bde9b/invenio_oaiserver-2.3.0.tar.gz", hash = "sha256:818181e6bec9b4169065ed618a3d13fdef88ad37223195714b37288a2151be71", size = 66119 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/d7/d2596600f4564fc549a58f6bbfe8987164182f5f8713df3a225bc8a78586/invenio_oaiserver-2.3.0-py2.py3-none-any.whl", hash = "sha256:0315e7042db09fc6599592bd8071def1e48f36a8d2ca9fda44da87fa009992d2", size = 116659 }, +] + +[[package]] +name = "invenio-oauth2server" +version = "2.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachelib" }, + { name = "flask-oauthlib" }, + { name = "flask-wtf" }, + { name = "future" }, + { name = "importlib-metadata" }, + { name = "invenio-accounts" }, + { name = "invenio-base" }, + { name = "invenio-i18n" }, + { name = "invenio-theme" }, + { name = "pyjwt" }, + { name = "requests-oauthlib" }, + { name = "wtforms" }, + { name = "wtforms-alchemy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/77/6d1c75a7a3329e37a5e7efec6f6a0ddb843943ed22ea1d7734a20847e13d/invenio_oauth2server-2.4.2.tar.gz", hash = "sha256:bdbdd0d0c8049583514c8531982af06a69e2902c355fd951fd09d3f149146b2a", size = 176631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/0a/dc5c772900fa70f4ee7159b36a1e323caab89004f1752c6a8739bca34617/invenio_oauth2server-2.4.2-py2.py3-none-any.whl", hash = "sha256:4a4b66d3f4242ef29cfec110a5ad8dd59fe2cbc0c4a0390a0bafa3df21ea8288", size = 284982 }, +] + +[[package]] +name = "invenio-oauthclient" +version = "4.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "flask-oauthlib" }, + { name = "github3-py" }, + { name = "invenio-accounts" }, + { name = "invenio-base" }, + { name = "invenio-i18n" }, + { name = "invenio-mail" }, + { name = "invenio-theme" }, + { name = "markupsafe" }, + { name = "oauthlib" }, + { name = "requests-oauthlib" }, + { name = "uritemplate" }, + { name = "uritools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/54/e8eedb5f3a4b4e88c545d73708f7b2aba726deaf1cd1e3832da1562fbb70/invenio_oauthclient-4.1.3.tar.gz", hash = "sha256:39bf0a33e70ef0305855a4d1832830a6dd489c5e173243a97201584bdf8d8ab9", size = 125062 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/3e/13328d440757311d6d8a803de9d50fbef94d6db96091a28432f0fee70a55/invenio_oauthclient-4.1.3-py2.py3-none-any.whl", hash = "sha256:c49bbbf8ffc5ef00f50ea1650639e3dd9b1f8b5717bf0181be149b7c2f66578b", size = 202785 }, +] + +[[package]] +name = "invenio-pages" +version = "4.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-administration" }, + { name = "invenio-base" }, + { name = "invenio-records-resources" }, + { name = "invenio-rest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a0/47/73ea2d1706389c656a2b1337a6398667dff2c868760a416a97d1fb0d3945/invenio_pages-4.1.2.tar.gz", hash = "sha256:8f24e40699724576c22c406d26bb3cf2f2de7018d570d47ca2af6ef02e7465ec", size = 48690 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/1a/437e71b75cb03b5bf14fa982868d5ef09a8f1155e75db058594a471a1d98/invenio_pages-4.1.2-py2.py3-none-any.whl", hash = "sha256:3b15fca9e48f8551d2b788d6b2b22c5b1b99b6526d47ecedc89d22ce82b399e0", size = 97436 }, +] + +[[package]] +name = "invenio-pidstore" +version = "1.3.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "base32-lib" }, + { name = "importlib-metadata" }, + { name = "importlib-resources" }, + { name = "invenio-base" }, + { name = "invenio-i18n" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f9/ff/f44f131d54230ff3599770050c521a50b128064a3180edbdb85026de8fe0/invenio_pidstore-1.3.4.tar.gz", hash = "sha256:d6f35aacdbe622d2114fdc921f9ae2fe8d3708c4c06a11b5e3f6d768c750b155", size = 58718 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/a7/deb1792f4f31e7cade5ebc8d4110dfc3e2ef68c3e04f6898a079f87209f5/invenio_pidstore-1.3.4-py2.py3-none-any.whl", hash = "sha256:f0124a293fc62a559052625f189176272ecc2171d0a3d3d9cf81006278699027", size = 106517 }, +] + +[[package]] +name = "invenio-previewer" +version = "2.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "charset-normalizer" }, + { name = "invenio-assets" }, + { name = "invenio-base" }, + { name = "invenio-formatter" }, + { name = "invenio-i18n" }, + { name = "invenio-pidstore" }, + { name = "invenio-records-ui" }, + { name = "lxml-html-clean" }, + { name = "mistune" }, + { name = "nbconvert" }, + { name = "nbformat" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0c/17/a15228f59dea31289d2b50b0dd4dc470ee6a4682978e665e314ca88356c9/invenio_previewer-2.2.2.tar.gz", hash = "sha256:0a803fac1b911ec3b080165ed4ac48bf340bfcad3849275ab68870211fe08075", size = 3169955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/60/8b7a1277e86481ed967a0c1e4d73c91bc8a8132d36cc69fef41da1d91f7a/invenio_previewer-2.2.2-py2.py3-none-any.whl", hash = "sha256:cf4510acf7bc93e9329280e7c894fca53a5279a73877437afd25e44e6b89cad1", size = 4085661 }, +] + +[[package]] +name = "invenio-queues" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-base" }, + { name = "invenio-celery" }, + { name = "redis" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3f/96/f257e16af921dbaae07c01a297add7105d9c6266087c1361189a32509317/invenio-queues-1.0.1.tar.gz", hash = "sha256:136b3bb425418a484aa453570138f9a052977ec6aeb08d9ad2f96ec100bc7cfc", size = 20927 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/3c/a6a6904e4c7eb74c07cdffbf6ec299dfd9b8624076e5463c5a185b377aa8/invenio_queues-1.0.1-py2.py3-none-any.whl", hash = "sha256:437466ac59d47ef81f621f36aac96c38bc3c04499a3105eaf35c6f22ed254d1b", size = 10471 }, +] + +[[package]] +name = "invenio-rdm-records" +version = "10.9.1" +source = { editable = "site/kcworks/dependencies/invenio-rdm-records" } +dependencies = [ + { name = "arrow" }, + { name = "babel-edtf" }, + { name = "citeproc-py" }, + { name = "citeproc-py-styles" }, + { name = "commonmeta-py" }, + { name = "datacite" }, + { name = "dcxml" }, + { name = "faker" }, + { name = "flask-iiif" }, + { name = "ftfy" }, + { name = "invenio-administration" }, + { name = "invenio-communities" }, + { name = "invenio-drafts-resources" }, + { name = "invenio-github" }, + { name = "invenio-i18n" }, + { name = "invenio-oaiserver" }, + { name = "invenio-oauth2server" }, + { name = "invenio-records-resources" }, + { name = "invenio-stats" }, + { name = "invenio-vocabularies" }, + { name = "nameparser" }, + { name = "pycountry" }, + { name = "pydash" }, + { name = "python-slugify" }, + { name = "pytz" }, + { name = "pyyaml" }, + { name = "types-requests" }, +] + +[package.metadata] +requires-dist = [ + { name = "arrow", specifier = ">=0.17.0" }, + { name = "babel-edtf", specifier = ">=1.1.0" }, + { name = "citeproc-py", specifier = ">=0.6.0" }, + { name = "citeproc-py-styles", specifier = ">=0.1.2,<1.0.0" }, + { name = "commonmeta-py", specifier = ">=0.8.4,<0.8.7" }, + { name = "datacite", specifier = ">=1.1.1,<2.0.0" }, + { name = "dcxml", specifier = ">=0.1.2,<1.0.0" }, + { name = "faker", specifier = ">=2.0.3" }, + { name = "flask-iiif", specifier = ">=1.0.0,<2.0.0" }, + { name = "ftfy", specifier = ">=4.4.3,<5.0.0" }, + { name = "invenio-administration", specifier = ">=2.0.0,<3.0.0" }, + { name = "invenio-app", marker = "extra == 'tests'", specifier = ">=1.4.0,<2.0.0" }, + { name = "invenio-communities", specifier = ">=13.0.0,<14.0.0" }, + { name = "invenio-db", extras = ["mysql", "postgresql"], marker = "extra == 'tests'", specifier = ">=1.0.14,<2.0.0" }, + { name = "invenio-drafts-resources", specifier = ">=3.0.0,<4.0.0" }, + { name = "invenio-github", specifier = ">=1.0.0,<2.0.0" }, + { name = "invenio-i18n", specifier = ">=2.0.0,<3.0.0" }, + { name = "invenio-oaiserver", specifier = ">=2.0.0,<3.0.0" }, + { name = "invenio-oauth2server", specifier = ">=2.0.0" }, + { name = "invenio-records-resources", specifier = ">=5.10.0,<6.0.0" }, + { name = "invenio-search", extras = ["elasticsearch7"], marker = "extra == 'elasticsearch7'", specifier = ">=2.1.0,<3.0.0" }, + { name = "invenio-search", extras = ["opensearch1"], marker = "extra == 'opensearch1'", specifier = ">=2.1.0,<3.0.0" }, + { name = "invenio-search", extras = ["opensearch2"], marker = "extra == 'opensearch2'", specifier = ">=2.1.0,<3.0.0" }, + { name = "invenio-stats", specifier = ">=4.0.0,<5.0.0" }, + { name = "invenio-vocabularies", specifier = ">=3.0.0,<4.0.0" }, + { name = "nameparser", specifier = ">=1.1.1" }, + { name = "pycountry", specifier = ">=22.3.5" }, + { name = "pydash", specifier = ">=6.0.0,<7.0.0" }, + { name = "pytest-black-ng", marker = "extra == 'tests'", specifier = ">=0.4.0" }, + { name = "pytest-invenio", marker = "extra == 'tests'", specifier = ">=2.1.0,<3.0.0" }, + { name = "pytest-mock", marker = "extra == 'tests'", specifier = ">=1.6.0" }, + { name = "python-slugify", specifier = ">=8.0.1" }, + { name = "pytz", specifier = ">=2020.4" }, + { name = "pyyaml", specifier = ">=5.4.0" }, + { name = "sphinx", marker = "extra == 'tests'", specifier = ">=4.5.0" }, + { name = "tripoli", marker = "extra == 'tests'", specifier = "~=2.0.0" }, + { name = "types-requests", specifier = "<2.31.0.7" }, +] + +[[package]] +name = "invenio-record-importer-kcworks" +version = "0.3.0a1" +source = { editable = "site/kcworks/dependencies/invenio-record-importer-kcworks" } +dependencies = [ + { name = "click" }, + { name = "halo" }, + { name = "invenio-app-rdm", extra = ["opensearch2"] }, + { name = "invenio-communities" }, + { name = "invenio-group-collections-kcworks" }, + { name = "invenio-rdm-records" }, + { name = "invenio-records-resources" }, + { name = "invenio-remote-user-data-kcworks" }, + { name = "invenio-saml" }, + { name = "invenio-utilities-tuw" }, + { name = "isbnlib" }, + { name = "jsonlines" }, + { name = "langdetect" }, + { name = "pytest" }, + { name = "python-dateutil" }, + { name = "python-iso639" }, + { name = "python-stdnum" }, + { name = "pytz" }, + { name = "requests" }, + { name = "timefhuman" }, + { name = "titlecase" }, + { name = "unidecode" }, + { name = "validators" }, +] + +[package.metadata] +requires-dist = [ + { name = "bumpver", marker = "extra == 'dev'" }, + { name = "check-manifest", marker = "extra == 'dev'" }, + { name = "click" }, + { name = "coverage", marker = "extra == 'dev'" }, + { name = "coverage", marker = "extra == 'test'" }, + { name = "docker-services-cli", marker = "extra == 'dev'" }, + { name = "halo" }, + { name = "invenio-app-rdm", extras = ["opensearch2"], specifier = "<13.0.0" }, + { name = "invenio-communities", directory = "site/kcworks/dependencies/invenio-communities" }, + { name = "invenio-group-collections-kcworks", directory = "site/kcworks/dependencies/invenio-group-collections-kcworks" }, + { name = "invenio-rdm-records" }, + { name = "invenio-records-resources" }, + { name = "invenio-remote-user-data-kcworks", directory = "site/kcworks/dependencies/invenio-remote-user-data-kcworks" }, + { name = "invenio-saml" }, + { name = "invenio-utilities-tuw" }, + { name = "ipykernel", marker = "extra == 'dev'" }, + { name = "isbnlib" }, + { name = "jsonlines" }, + { name = "langdetect" }, + { name = "pip-tools", marker = "extra == 'dev'" }, + { name = "pytest" }, + { name = "pytest-invenio", marker = "extra == 'dev'" }, + { name = "python-dateutil" }, + { name = "python-iso639" }, + { name = "python-stdnum" }, + { name = "pytz" }, + { name = "requests" }, + { name = "selenium", marker = "extra == 'dev'" }, + { name = "timefhuman" }, + { name = "titlecase" }, + { name = "unidecode" }, + { name = "validators" }, +] + +[[package]] +name = "invenio-records" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, + { name = "invenio-celery" }, + { name = "invenio-i18n" }, + { name = "jsonpatch" }, + { name = "jsonref" }, + { name = "jsonresolver" }, + { name = "jsonschema" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/1b/8f6d44c65d997d3e553c2cc21fb2c3b16dafc98e49ca32fcfed58115046b/invenio-records-2.4.1.tar.gz", hash = "sha256:26b6d4c45da343e146c05a13d90db57c6d99d499e8a4c8596fc95fe7e4dbbbf3", size = 146213 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/4c/2adb1196a0f4aa26b6549a73ce233716633fe1f925279695d2e0861f9f10/invenio_records-2.4.1-py2.py3-none-any.whl", hash = "sha256:253649c67174690a7ac4b1c7bdefdea5647bd73e5b067dfea24dc9f254251047", size = 185325 }, +] + +[[package]] +name = "invenio-records-files" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "invenio-files-rest" }, + { name = "invenio-records" }, + { name = "invenio-records-rest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/84/c5/8aa181ca0f392fa8fb4bd95b46681e81df00f172c8f18d1c23627b1390c4/invenio-records-files-1.2.1.tar.gz", hash = "sha256:a08da459517f6354cb99bb0005f32fab3894f2852fe3a1a602bda3b6dcad4082", size = 30042 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/f5/05c06a0acc290644eef25fec2e48d1345035b12bf80a2ed988082d0446c5/invenio_records_files-1.2.1-py2.py3-none-any.whl", hash = "sha256:46155d8a21b7b9ef7ba0665b824c35c86b44e06b940953990473c252a8d9e18b", size = 20986 }, +] + +[[package]] +name = "invenio-records-permissions" +version = "0.21.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-access" }, + { name = "invenio-i18n" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8d/67/244456744c55ed313274b525a66855fca1720f12fa53233186a1d394f0f4/invenio-records-permissions-0.21.0.tar.gz", hash = "sha256:84e0374e1d3371dd942c8e2921269237a7f191b10e4d7f3e60021a8b21770772", size = 30168 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/5c/5dd6a5586a0740e528cfbfe704ae3e8a29c2e5eb4a0f4cde40f297306e38/invenio_records_permissions-0.21.0-py2.py3-none-any.whl", hash = "sha256:70c74251978986e6a105ccb9747f9e7d13ccac892e7c812c52eab34deadc63b9", size = 48971 }, +] + +[[package]] +name = "invenio-records-resources" +version = "5.10.0" +source = { editable = "site/kcworks/dependencies/invenio-records-resources" } +dependencies = [ + { name = "babel-edtf" }, + { name = "flask-resources" }, + { name = "invenio-accounts" }, + { name = "invenio-base" }, + { name = "invenio-files-rest" }, + { name = "invenio-i18n" }, + { name = "invenio-indexer" }, + { name = "invenio-jsonschemas" }, + { name = "invenio-pidstore" }, + { name = "invenio-records" }, + { name = "invenio-records-permissions" }, + { name = "invenio-stats" }, + { name = "luqum" }, + { name = "marshmallow-utils" }, + { name = "uritemplate" }, + { name = "wand" }, + { name = "xmltodict" }, + { name = "zipstream-ng" }, +] + +[package.metadata] +requires-dist = [ + { name = "babel-edtf", specifier = ">=1.1.0" }, + { name = "flask-resources", specifier = ">=1.0.0,<2.0.0" }, + { name = "invenio-accounts", specifier = ">=5.0.0,<6.0.0" }, + { name = "invenio-app", marker = "extra == 'tests'", specifier = ">=1.3.2" }, + { name = "invenio-base", specifier = ">=1.3.0,<2.0.0" }, + { name = "invenio-db", extras = ["mysql", "postgresql", "versioning"], marker = "extra == 'tests'", specifier = ">=1.0.14,<2.0.0" }, + { name = "invenio-files-rest", specifier = ">=2.0.0,<3.0.0" }, + { name = "invenio-i18n", specifier = ">=2.0.0,<3.0.0" }, + { name = "invenio-indexer", specifier = ">=2.1.0,<3.0.0" }, + { name = "invenio-jsonschemas", specifier = ">=1.1.3,<2.0.0" }, + { name = "invenio-pidstore", specifier = ">=1.3.0,<2.0.0" }, + { name = "invenio-records", specifier = ">=2.1.0,<3.0.0" }, + { name = "invenio-records-permissions", specifier = ">=0.18.0,<1.0.0" }, + { name = "invenio-search", extras = ["elasticsearch7"], marker = "extra == 'elasticsearch7'", specifier = ">=2.1.0,<3.0.0" }, + { name = "invenio-search", extras = ["opensearch1"], marker = "extra == 'opensearch1'", specifier = ">=2.1.0,<3.0.0" }, + { name = "invenio-search", extras = ["opensearch2"], marker = "extra == 'opensearch2'", specifier = ">=2.1.0,<3.0.0" }, + { name = "invenio-stats", specifier = ">=4.0.0,<5.0.0" }, + { name = "luqum", specifier = ">=0.11.0" }, + { name = "marshmallow-utils", specifier = ">=0.7.1,<1.0.0" }, + { name = "pytest-black", marker = "extra == 'tests'", specifier = ">=0.3.0" }, + { name = "pytest-invenio", marker = "extra == 'tests'", specifier = ">=2.1.0,<3.0.0" }, + { name = "pytest-mock", marker = "extra == 'tests'", specifier = ">=1.6.0" }, + { name = "sphinx", marker = "extra == 'tests'", specifier = ">=5,<6" }, + { name = "uritemplate", specifier = ">=3.0.1" }, + { name = "wand", specifier = ">=0.6.6,<0.7.0" }, + { name = "xmltodict", specifier = "~=0.12.0" }, + { name = "zipstream-ng", specifier = ">=1.3.4" }, +] + +[[package]] +name = "invenio-records-rest" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bleach" }, + { name = "ftfy" }, + { name = "invenio-base" }, + { name = "invenio-i18n" }, + { name = "invenio-indexer" }, + { name = "invenio-pidstore" }, + { name = "invenio-records" }, + { name = "invenio-rest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/8f/20315257741e554a1f278ce99305d2c7e8427206cb1ffbc2991fb41fdce3/invenio-records-rest-2.4.1.tar.gz", hash = "sha256:a5bb71279127ce1c9751aec3d10331b0546e77f5df4b557b6ec13a14e9b0c332", size = 83195 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/88/b28a88fed7b58a00ddf61ab8eea44e005b37bef1b5304ae81dbdfe1acc27/invenio_records_rest-2.4.1-py2.py3-none-any.whl", hash = "sha256:72fd085ac13e961380c60632d28c01d9b8707c74d7633c7911aefd39cc7e102f", size = 65539 }, +] + +[[package]] +name = "invenio-records-ui" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-base" }, + { name = "invenio-i18n" }, + { name = "invenio-pidstore" }, + { name = "invenio-records" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1c/67/5b3e8b9530399d88598f93b6601e7349d9797b9f9dd683cfed75c1cd1b10/invenio_records_ui-1.2.2.tar.gz", hash = "sha256:6791a0e458352275e0c0ed4d629d4e624b3b4cb93916f6f7bbce1aa6f01794bf", size = 30030 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/6b/ef890eae14d855ac49de6f3edba25000507f58bf43556b0a6a2e4af4804d/invenio_records_ui-1.2.2-py2.py3-none-any.whl", hash = "sha256:6268690c30ff257a5b1bdb8db33fdead7e6e222b80fb987f3242a47efd869b22", size = 22773 }, +] + +[[package]] +name = "invenio-remote-api-provisioner" +version = "0.1.0.dev1" +source = { editable = "site/kcworks/dependencies/invenio-remote-api-provisioner" } +dependencies = [ + { name = "click" }, + { name = "invenio-app-rdm", extra = ["opensearch2"] }, + { name = "opensearch-dsl" }, + { name = "psycopg2-binary" }, + { name = "python-iso639" }, +] + +[package.metadata] +requires-dist = [ + { name = "bumpver", marker = "extra == 'dev'" }, + { name = "check-manifest", marker = "extra == 'dev'" }, + { name = "click" }, + { name = "docker-services-cli", marker = "extra == 'dev'" }, + { name = "invenio-app-rdm", extras = ["opensearch2"], specifier = "<13.0.0" }, + { name = "opensearch-dsl" }, + { name = "pip-tools", marker = "extra == 'dev'" }, + { name = "psycopg2-binary" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.3.2" }, + { name = "pytest-invenio", marker = "extra == 'dev'" }, + { name = "pytest-runner", marker = "extra == 'dev'" }, + { name = "python-iso639" }, + { name = "requests-mock", marker = "extra == 'dev'" }, +] + +[[package]] +name = "invenio-remote-user-data-kcworks" +version = "0.6.1b3" +source = { editable = "site/kcworks/dependencies/invenio-remote-user-data-kcworks" } +dependencies = [ + { name = "celery" }, + { name = "click" }, + { name = "deepdiff" }, + { name = "invenio-app-rdm" }, + { name = "invenio-group-collections-kcworks" }, + { name = "invenio-queues" }, + { name = "invenio-search" }, + { name = "invenio-utilities-tuw" }, + { name = "opensearch-dsl" }, +] + +[package.metadata] +requires-dist = [ + { name = "celery" }, + { name = "check-manifest", marker = "extra == 'dev'" }, + { name = "click" }, + { name = "coverage", marker = "extra == 'test'" }, + { name = "deepdiff" }, + { name = "invenio-app-rdm", specifier = "<13.0.0" }, + { name = "invenio-group-collections-kcworks" }, + { name = "invenio-queues" }, + { name = "invenio-search" }, + { name = "invenio-utilities-tuw" }, + { name = "opensearch-dsl" }, + { name = "pip-tools", marker = "extra == 'dev'" }, + { name = "pipenv", marker = "extra == 'dev'" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=7.3.2" }, + { name = "pytest-invenio", marker = "extra == 'dev'" }, + { name = "pytest-runner", marker = "extra == 'dev'" }, + { name = "requests-mock", marker = "extra == 'dev'" }, +] + +[[package]] +name = "invenio-requests" +version = "4.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-records-resources" }, + { name = "invenio-theme" }, + { name = "invenio-users-resources" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/aa/85b7dd1a752cf47865e1ddf81701d32b85a0856744ecf3ed6814c93ddab0/invenio-requests-4.1.2.tar.gz", hash = "sha256:b1ccaabec7982e4c1a13b2865e2cfa833f2a1c57bcd5e5e3f5f32c3439f7371d", size = 137343 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/5d/560591e7fc1855b9201cc7e4548e0609670d40d47661114878952382dc38/invenio_requests-4.1.2-py2.py3-none-any.whl", hash = "sha256:980a05cda4c04ca96102bd60481bb8976950c1769e02cf7ebcb2ee768c7aa112", size = 334982 }, +] + +[[package]] +name = "invenio-rest" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask-cors" }, + { name = "invenio-base" }, + { name = "invenio-logging" }, + { name = "itsdangerous" }, + { name = "marshmallow" }, + { name = "webargs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/c3/50a9af17bfef9902f11e33dbcd59dc0e399c82190a084d321fc174eed98b/invenio_rest-1.5.0.tar.gz", hash = "sha256:e338f76aaf56a92cd18df3d54532c26f1c77fbeb44f1197fdd98fcc2c78b92ab", size = 36892 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/c1/6805f0dcd7f140778f4884e1975b68607217b98e3665a85e6d5e2f0c6ed6/invenio_rest-1.5.0-py2.py3-none-any.whl", hash = "sha256:dc57a22dd45a4043e27e2ca2cee44b2ccb337e6c94d5f5aaf17e1571b3e4f69e", size = 21419 }, +] + +[[package]] +name = "invenio-s3" +version = "1.0.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "boto3" }, + { name = "invenio-files-rest" }, + { name = "s3fs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/45/fd87d7f65843279c007873103c2a0b78cb526a2c9091978b5c78b6734d3c/invenio_s3-1.0.7.tar.gz", hash = "sha256:e8c661a7582b60def82621a3011a184dc7460fbdc96cf0428a58cfee0d589432", size = 24427 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/2b/f8a63fdddcc87c4a395a6b57b0b484061e03ad8552268a52ac69d674bc76/invenio_s3-1.0.7-py2.py3-none-any.whl", hash = "sha256:d2afbdc9cb58360ed8e16dd691579f45f4f0d1b37e5c70a789385352c08f9d78", size = 10898 }, +] + +[[package]] +name = "invenio-saml" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-accounts" }, + { name = "python3-saml" }, + { name = "uritools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/12/e38a2a951f0cd18dec50e409e028ccf8037f4135827b520a7789079ddd53/invenio_saml-1.0.1.tar.gz", hash = "sha256:b441aa130985cabe34aa5435ea2358571ac16e0b164ae4b60fb3a7d37b4a8b58", size = 41583 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/39/4d0c0a55631961670c3c1d9483eedc1223d51686c4a461782cd34a8935f1/invenio_saml-1.0.1-py2.py3-none-any.whl", hash = "sha256:a75d3cfe41fbc705310f459ae9a7c61d887522a6789b7157b10a9f4167881be8", size = 59595 }, +] + +[[package]] +name = "invenio-search" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dictdiffer" }, + { name = "invenio-base" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/5d/3b89690cbacf5f2b2a2fe30a3785b2666327a1302fa096a7afa2171d4251/invenio-search-2.4.1.tar.gz", hash = "sha256:569df7a0db6b84951acecbd60b5871c9f06aaf61421bf493f9ce646f685eb0a6", size = 46391 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/b6/4b214048daa1ea3dfb2f849f89eb35262c30a2bea9397063d1eba8b1772a/invenio_search-2.4.1-py2.py3-none-any.whl", hash = "sha256:ced2c342a69b8a27262728b00c51d014eaf32a1330499decac192fa810141d21", size = 25839 }, +] + +[package.optional-dependencies] +opensearch2 = [ + { name = "opensearch-dsl" }, + { name = "opensearch-py" }, +] + +[[package]] +name = "invenio-search-ui" +version = "2.8.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "invenio-assets" }, + { name = "invenio-base" }, + { name = "invenio-i18n" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/29/5d37203f401f33ec0b058e0255c4d6de803d4d2d6e041372f528969e4ffa/invenio-search-ui-2.8.7.tar.gz", hash = "sha256:58710fbcfe06f8d146a48ca233671699c0f40ea87b5a5579e83017e7d3121b9a", size = 92967 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/8b/c4a177bc9de074fa7c6e0e1290ece66b2b788c9b8e9df897dd220dd7601b/invenio_search_ui-2.8.7-py2.py3-none-any.whl", hash = "sha256:67d21ef16c5c03c475edfbc3104237c4a2ea0dc22dbefb98fd2c2a997efad7ca", size = 216882 }, +] + +[[package]] +name = "invenio-stats" +version = "4.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "counter-robots" }, + { name = "invenio-base" }, + { name = "invenio-cache" }, + { name = "invenio-celery" }, + { name = "invenio-queues" }, + { name = "maxminddb-geolite2" }, + { name = "python-dateutil" }, + { name = "python-geoip" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/24/5adcbaab9a4d4602feb3c55616e6643a92e6bcef33f50e62ce8ef437d81d/invenio_stats-4.3.0.tar.gz", hash = "sha256:b360f4e88fd7f60bf8a43a4f1dfb49ae24b7bedfad5baa631262edb188def3dd", size = 60765 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/65/5a/bfe528a521764ab90c5fd3217bdd3154b84044117a750b9552e4979ae98b/invenio_stats-4.3.0-py2.py3-none-any.whl", hash = "sha256:fdcfb01ab34eb410022a06412b91bac302fa932c0e12d916acf399dec8ced438", size = 50689 }, +] + +[[package]] +name = "invenio-subjects-fast" +version = "2023.7.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/8e/b50606bb6e7e5a715367479834b245de5da6cd11f731a8ab314c910e71e5/invenio-subjects-fast-2023.7.5.tar.gz", hash = "sha256:ae8e37e7138b13954b0236c17e148bac029425d4b4affe1a1e01277deeb0487d", size = 32152677 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/bb/61561fbfd8070d6783fa758e633e4c08a2ec4103e9d3fc53d3a7adaa1405/invenio_subjects_fast-2023.7.5-py2.py3-none-any.whl", hash = "sha256:b725cf430bcc806c4516be95e4c76b33385a1c1a8aa1d06c8fbf3feb43643be3", size = 33178841 }, +] + +[[package]] +name = "invenio-theme" +version = "3.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask-menu" }, + { name = "invenio-assets" }, + { name = "invenio-base" }, + { name = "invenio-i18n" }, + { name = "jsmin" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/d6/f058c32627b89222c0bb9cdf7b55540c74a5bdf5fdaa642421a093c0c100/invenio_theme-3.6.1.tar.gz", hash = "sha256:e96719c3c07b222fd4946dd501054be4bf1ff58d2ea99d608ecc5506bd310efb", size = 4577707 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/57/81eb6418378f4f879622fc237d1e5857f1ff2febb7bc5bc0cd065fe8522e/invenio_theme-3.6.1-py2.py3-none-any.whl", hash = "sha256:7af06ccdb49218245a0a15d625fa8dd51ce1ff0a55c8f813cbe8e5efcecb410e", size = 4594509 }, +] + +[[package]] +name = "invenio-userprofiles" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-accounts" }, + { name = "invenio-i18n" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/90/b4801b726109c0aa673efb03e65834a28cbd26adc495aafbb41ea0cda430/invenio_userprofiles-3.0.2.tar.gz", hash = "sha256:434539bf0801f9b1253943d5cb44f3c5a8c9bf3138507f7cc5fcfa6b7a807b93", size = 62618 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/57/21ec64b19b6b1becd53662fb59e63133212e3fa2e90506018b84c629b227/invenio_userprofiles-3.0.2-py2.py3-none-any.whl", hash = "sha256:e9a8b7c8c17416ce66139704bdca339f559462f48e27dc8bba12ff12022e8188", size = 152270 }, +] + +[[package]] +name = "invenio-users-resources" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-accounts" }, + { name = "invenio-administration" }, + { name = "invenio-i18n" }, + { name = "invenio-notifications" }, + { name = "invenio-oauthclient" }, + { name = "invenio-records-resources" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2c/db/f5ed7fe2fcd9c41d7af36cc622f02f7cbabeedb142015cc287bf21230824/invenio-users-resources-5.2.1.tar.gz", hash = "sha256:dd9183ea579fbbba4231593312ae8a8bcd669bb264b0f5f594ab3ac3a1b9180c", size = 69919 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/59/c652c48bd85eb219a18c890f00e777052fe529fb5ec5b54195bfef4e0e60/invenio_users_resources-5.2.1-py2.py3-none-any.whl", hash = "sha256:86a6e2b944e75de43d4b568ed85f425c996578e56a02d3e2776dc368e4d747fc", size = 145399 }, +] + +[[package]] +name = "invenio-utilities-tuw" +version = "2025.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-app-rdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/31/3a/3888f80b1e88e6da5763dfc36ebafa7f92142186e26164eb23971e966775/invenio_utilities_tuw-2025.0.0.tar.gz", hash = "sha256:af882b02bf83d071f40f530804d5cfdc6957bfd065323705095f3c0fc6880125", size = 21480 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/11/4d80421b5dd7a3e0ecf8d555fdb357d3391e17a09c8ca7819c8a044ebe9c/invenio_utilities_tuw-2025.0.0-py3-none-any.whl", hash = "sha256:a22f2ebf12709a219f5f035e7dcfd452d9d5d58cc81f4699aa33f3ed4c81aba4", size = 23826 }, +] + +[[package]] +name = "invenio-vocabularies" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-i18n" }, + { name = "invenio-records-resources" }, + { name = "lxml" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/9b/de8dce777a6fb3da28b73ab646288eea76634914143f90d1b0faf5a2b203/invenio-vocabularies-3.4.2.tar.gz", hash = "sha256:6dec49561df358ac63793ecc4f89660f1414abbc4300f2e0ebae89e9aaf28523", size = 123770 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/46/9c74b224dc1e9bd1388b5640bfb46f814961b90c8b17374e9610caaa8b1a/invenio_vocabularies-3.4.2-py2.py3-none-any.whl", hash = "sha256:c7fb05cdce9f5d3fccfd0430cd80561b73b4799804634048c7098b23a1b906ac", size = 238443 }, +] + +[[package]] +name = "invenio-webhooks" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "invenio-i18n" }, + { name = "invenio-oauth2server" }, + { name = "invenio-oauthclient" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/3f/f750dd349ac1d838f897f8863856a3550e2a8c8ac43398175e451a24fe71/invenio-webhooks-1.0.1.tar.gz", hash = "sha256:fc6bd2039dbc4e31631cf6e63708c1c1ab81110adc4f1c035cdfa1df9eac6b8c", size = 35296 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/86/3cae78e953efb2e4dda60ac2500cbea74f282d0ec64610096f765ee0440e/invenio_webhooks-1.0.1-py2.py3-none-any.whl", hash = "sha256:2476b3e4c8cdf0acc8d3e81d5684d1a7b70192a0d752f05f64124a04f52b4e50", size = 35229 }, +] + +[[package]] +name = "ipython" +version = "9.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "ipython-pygments-lexers" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/ce/012a0f40ca58a966f87a6e894d6828e2817657cbdf522b02a5d3a87d92ce/ipython-9.0.2.tar.gz", hash = "sha256:ec7b479e3e5656bf4f58c652c120494df1820f4f28f522fb7ca09e213c2aab52", size = 4366102 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/3a/917cb9e72f4e1a4ea13c862533205ae1319bd664119189ee5cc9e4e95ebf/ipython-9.0.2-py3-none-any.whl", hash = "sha256:143ef3ea6fb1e1bffb4c74b114051de653ffb7737a3f7ab1670e657ca6ae8c44", size = 600524 }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, +] + +[[package]] +name = "isbnlib" +version = "3.10.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/6d/55b9ee89fdfb3aacb92b975a60357c7aa547db358817e16be3b6f8f5d781/isbnlib-3.10.14.tar.gz", hash = "sha256:96f90864c77b01f55fa11e5bfca9fd909501d9842f3bc710d4eab85195d90539", size = 48046 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/ce/1eb1e2afaca49add3185e202ce9c2c6d5779b7eecb20973e43ad804eb2a4/isbnlib-3.10.14-py2.py3-none-any.whl", hash = "sha256:f885b350fc8e600a919ed46e3b07253062cd604af69885455a25a299217b3fe2", size = 52535 }, +] + +[[package]] +name = "isodate" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320 }, +] + +[[package]] +name = "isort" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b8/21/1e2a441f74a653a144224d7d21afe8f4169e6c7c20bb13aec3a2dc3815e0/isort-6.0.1.tar.gz", hash = "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450", size = 821955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/11/114d0a5f4dabbdcedc1125dee0888514c3c3b16d3e9facad87ed96fad97c/isort-6.0.1-py3-none-any.whl", hash = "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615", size = 94186 }, +] + +[[package]] +name = "itsdangerous" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/66/d6c5859dcac92b442626427a8c7a42322068c5cd5d4a463ce78b93f730b7/itsdangerous-2.0.1.tar.gz", hash = "sha256:9e724d68fc22902a1435351f84c3fb8623f303fffcc566a4cb952df8c572cff0", size = 59336 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/96/26f935afba9cd6140216da5add223a0c465b99d0f112b68a4ca426441019/itsdangerous-2.0.1-py3-none-any.whl", hash = "sha256:5174094b9637652bdb841a3029700391451bd092ba3db90600dea710ba28e97c", size = 18326 }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, +] + +[[package]] +name = "jmespath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 }, +] + +[[package]] +name = "jsbeautifier" +version = "1.15.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "editorconfig" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ea/98/d6cadf4d5a1c03b2136837a435682418c29fdeb66be137128544cecc5b7a/jsbeautifier-1.15.4.tar.gz", hash = "sha256:5bb18d9efb9331d825735fbc5360ee8f1aac5e52780042803943aa7f854f7592", size = 75257 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/14/1c65fccf8413d5f5c6e8425f84675169654395098000d8bddc4e9d3390e1/jsbeautifier-1.15.4-py3-none-any.whl", hash = "sha256:72f65de312a3f10900d7685557f84cb61a9733c50dcc27271a39f5b0051bf528", size = 94707 }, +] + +[[package]] +name = "jsmin" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/73/e01e4c5e11ad0494f4407a3f623ad4d87714909f50b17a06ed121034ff6e/jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc", size = 13925 } + +[[package]] +name = "json5" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/3d/bbe62f3d0c05a689c711cff57b2e3ac3d3e526380adb7c781989f075115c/json5-0.10.0.tar.gz", hash = "sha256:e66941c8f0a02026943c52c2eb34ebeb2a6f819a0be05920a6f5243cd30fd559", size = 48202 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/42/797895b952b682c3dafe23b1834507ee7f02f4d6299b65aaa61425763278/json5-0.10.0-py3-none-any.whl", hash = "sha256:19b23410220a7271e8377f81ba8aacba2fdd56947fbb137ee5977cbe1f5e8dfa", size = 34049 }, +] + +[[package]] +name = "jsonlines" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701 }, +] + +[[package]] +name = "jsonpatch" +version = "1.33" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonpointer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/78/18813351fe5d63acad16aec57f94ec2b70a09e53ca98145589e185423873/jsonpatch-1.33.tar.gz", hash = "sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c", size = 21699 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/07/02e16ed01e04a374e644b575638ec7987ae846d25ad97bcc9945a3ee4b0e/jsonpatch-1.33-py2.py3-none-any.whl", hash = "sha256:0ae28c0cd062bbd8b8ecc26d7d164fbbea9652a1a3693f3b956c1eae5145dade", size = 12898 }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 }, +] + +[[package]] +name = "jsonref" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/0d/c1f3277e90ccdb50d33ed5ba1ec5b3f0a242ed8c1b1a85d3afeb68464dca/jsonref-1.1.0.tar.gz", hash = "sha256:32fe8e1d85af0fdefbebce950af85590b22b60f9e95443176adbde4e1ecea552", size = 8814 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/ec/e1db9922bceb168197a558a2b8c03a7963f1afe93517ddd3cf99f202f996/jsonref-1.1.0-py3-none-any.whl", hash = "sha256:590dc7773df6c21cbf948b5dac07a72a251db28b0238ceecce0a2abfa8ec30a9", size = 9425 }, +] + +[[package]] +name = "jsonresolver" +version = "0.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pluggy" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e4/39/3d36138e85dbf9d5faaa56cba1b6c1a4c291e44d4778baf49cb781d6ac48/jsonresolver-0.3.2.tar.gz", hash = "sha256:66d70fd43d0b961a18aa09917bd1a49400f0adb7ed70fb2611188f319f306ed9", size = 20665 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/b7/8250850dc0ef4ed46ec0cd84b473d677be3bb9787ff8bc81e69d889c7a29/jsonresolver-0.3.2-py2.py3-none-any.whl", hash = "sha256:33ed39dc582db4b011a1356ebb76c43317f069f01f98f357da9a4cdb6a6539d5", size = 9902 }, +] + +[[package]] +name = "jsonschema" +version = "4.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2024.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/10/db/58f950c996c793472e336ff3655b13fbcf1e3b359dcf52dcf3ed3b52c352/jsonschema_specifications-2024.10.1.tar.gz", hash = "sha256:0f38b83639958ce1152d02a7f062902c41c8fd20d558b0c34344292d417ae272", size = 15561 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/0f/8910b19ac0670a0f80ce1008e5e751c4a57e14d2c4c13a482aa6079fa9d6/jsonschema_specifications-2024.10.1-py3-none-any.whl", hash = "sha256:a09a0680616357d9a0ecf05c12ad234479f549239d0f5b55f3deea67475da9bf", size = 18459 }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, +] + +[[package]] +name = "jupyter-core" +version = "5.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/11/b56381fa6c3f4cc5d2cf54a7dbf98ad9aa0b339ef7a601d6053538b079a7/jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9", size = 87629 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 }, +] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, +] + +[[package]] +name = "kcworks" +version = "0.3.8b11" +source = { editable = "." } +dependencies = [ + { name = "aiohttp" }, + { name = "async-timeout" }, + { name = "flask-admin" }, + { name = "flask-babelex" }, + { name = "flask-breadcrumbs" }, + { name = "flask-iiif" }, + { name = "flask-principal" }, + { name = "halo" }, + { name = "invenio-app-rdm" }, + { name = "invenio-communities" }, + { name = "invenio-group-collections-kcworks" }, + { name = "invenio-logging", extra = ["sentry"] }, + { name = "invenio-modular-deposit-form" }, + { name = "invenio-modular-detail-page" }, + { name = "invenio-rdm-records" }, + { name = "invenio-record-importer-kcworks" }, + { name = "invenio-records-resources" }, + { name = "invenio-remote-api-provisioner" }, + { name = "invenio-remote-user-data-kcworks" }, + { name = "invenio-s3" }, + { name = "invenio-saml" }, + { name = "invenio-subjects-fast" }, + { name = "invenio-utilities-tuw" }, + { name = "isbnlib" }, + { name = "langdetect" }, + { name = "lxml" }, + { name = "numpy" }, + { name = "pip" }, + { name = "pluggy" }, + { name = "pydantic" }, + { name = "pytest-invenio" }, + { name = "python-dotenv" }, + { name = "python-iso639" }, + { name = "python-stdnum" }, + { name = "selenium" }, + { name = "sentry-sdk", extra = ["flask"] }, + { name = "sqlalchemy", extra = ["asyncio"] }, + { name = "timefhuman" }, + { name = "titlecase" }, + { name = "tqdm" }, + { name = "unidecode" }, + { name = "uwsgi" }, + { name = "xmlsec" }, +] + +[package.optional-dependencies] +dev = [ + { name = "black" }, + { name = "check-manifest" }, + { name = "djlint" }, + { name = "docker-services-cli" }, + { name = "furo" }, + { name = "halo" }, + { name = "jsonlines" }, + { name = "mypy" }, + { name = "myst-parser" }, + { name = "psycopg2-binary" }, + { name = "pytest-black" }, + { name = "pytest-isort" }, + { name = "pytest-mock" }, + { name = "requests-mock" }, + { name = "ruff" }, + { name = "selenium" }, + { name = "sphinx" }, +] +tests = [ + { name = "pytest-invenio" }, + { name = "pytest-mypy" }, + { name = "pytest-ruff" }, +] + +[package.dev-dependencies] +dev = [ + { name = "black" }, + { name = "check-manifest" }, + { name = "djlint" }, + { name = "docker-services-cli" }, + { name = "mypy" }, + { name = "psycopg2-binary" }, + { name = "pytest-black" }, + { name = "pytest-isort" }, + { name = "pytest-mock" }, + { name = "requests-mock" }, + { name = "ruff" }, + { name = "selenium" }, + { name = "sphinx-copybutton" }, +] + +[package.metadata] +requires-dist = [ + { name = "aiohttp", specifier = ">=3.11.15" }, + { name = "async-timeout", specifier = ">=4.0.3" }, + { name = "black", marker = "extra == 'dev'", specifier = ">=25.1.0" }, + { name = "check-manifest", marker = "extra == 'dev'", specifier = ">=0.25" }, + { name = "djlint", marker = "extra == 'dev'", specifier = ">=1.36.4" }, + { name = "docker-services-cli", marker = "extra == 'dev'" }, + { name = "flask-admin", specifier = "==1.6.1" }, + { name = "flask-babelex" }, + { name = "flask-breadcrumbs" }, + { name = "flask-iiif" }, + { name = "flask-principal" }, + { name = "furo", marker = "extra == 'dev'" }, + { name = "halo" }, + { name = "halo", marker = "extra == 'dev'" }, + { name = "invenio-app-rdm", specifier = ">=12.0.0,<13.0.0" }, + { name = "invenio-communities", editable = "site/kcworks/dependencies/invenio-communities" }, + { name = "invenio-group-collections-kcworks", editable = "site/kcworks/dependencies/invenio-group-collections-kcworks" }, + { name = "invenio-logging", extras = ["sentry"], specifier = "==2.1.5" }, + { name = "invenio-modular-deposit-form", editable = "site/kcworks/dependencies/invenio-modular-deposit-form" }, + { name = "invenio-modular-detail-page", editable = "site/kcworks/dependencies/invenio-modular-detail-page" }, + { name = "invenio-rdm-records", editable = "site/kcworks/dependencies/invenio-rdm-records" }, + { name = "invenio-record-importer-kcworks", editable = "site/kcworks/dependencies/invenio-record-importer-kcworks" }, + { name = "invenio-records-resources", editable = "site/kcworks/dependencies/invenio-records-resources" }, + { name = "invenio-remote-api-provisioner", editable = "site/kcworks/dependencies/invenio-remote-api-provisioner" }, + { name = "invenio-remote-user-data-kcworks", editable = "site/kcworks/dependencies/invenio-remote-user-data-kcworks" }, + { name = "invenio-s3" }, + { name = "invenio-saml" }, + { name = "invenio-subjects-fast" }, + { name = "invenio-utilities-tuw" }, + { name = "isbnlib" }, + { name = "jsonlines", marker = "extra == 'dev'" }, + { name = "langdetect" }, + { name = "lxml", specifier = "==5.2.1" }, + { name = "mypy", marker = "extra == 'dev'", specifier = ">=1.8.0" }, + { name = "myst-parser", marker = "extra == 'dev'" }, + { name = "numpy" }, + { name = "pip" }, + { name = "pluggy", specifier = ">=0.10.0,<1.0" }, + { name = "psycopg2-binary", marker = "extra == 'dev'", specifier = ">=2.9.10" }, + { name = "pydantic" }, + { name = "pytest-black", marker = "extra == 'dev'", specifier = ">=0.6.0" }, + { name = "pytest-invenio", specifier = "<3.0.0" }, + { name = "pytest-invenio", marker = "extra == 'tests'", specifier = ">=2.1.0,<3.0.0" }, + { name = "pytest-isort", marker = "extra == 'dev'", specifier = ">=4.0.0" }, + { name = "pytest-mock", marker = "extra == 'dev'" }, + { name = "pytest-mypy", marker = "extra == 'tests'", specifier = ">=0.10.0" }, + { name = "pytest-ruff", marker = "extra == 'tests'", specifier = ">=0.1.0" }, + { name = "python-dotenv" }, + { name = "python-iso639" }, + { name = "python-stdnum" }, + { name = "requests-mock", marker = "extra == 'dev'" }, + { name = "ruff", marker = "extra == 'dev'", specifier = ">=0.3.0" }, + { name = "selenium" }, + { name = "selenium", marker = "extra == 'dev'" }, + { name = "sentry-sdk", extras = ["flask"], specifier = ">=1.0.0,<2.0.0" }, + { name = "sphinx", marker = "extra == 'dev'" }, + { name = "sqlalchemy", extras = ["asyncio"] }, + { name = "timefhuman" }, + { name = "titlecase" }, + { name = "tqdm" }, + { name = "unidecode" }, + { name = "uwsgi", specifier = ">=2.0.23" }, + { name = "xmlsec", specifier = "==1.3.14" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "black", specifier = ">=25.1.0" }, + { name = "check-manifest", specifier = ">=0.25" }, + { name = "djlint", specifier = ">=1.36.4" }, + { name = "docker-services-cli" }, + { name = "mypy", specifier = ">=1.8.0" }, + { name = "psycopg2-binary", specifier = ">=2.9.10" }, + { name = "pytest-black", specifier = ">=0.6.0" }, + { name = "pytest-isort", specifier = ">=4.0.0" }, + { name = "pytest-mock" }, + { name = "requests-mock" }, + { name = "ruff", specifier = ">=0.3.0" }, + { name = "selenium" }, + { name = "sphinx-copybutton", specifier = ">=0.5.2" }, +] + +[[package]] +name = "kombu" +version = "5.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "amqp" }, + { name = "tzdata" }, + { name = "vine" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/65/90/75cd9cbb8321df3f1dd881bbb1ccfb7aeadb599f54f4e04125b75e9c78fc/kombu-5.5.1.tar.gz", hash = "sha256:a4c2250396cdfb947c5e5322f3094fd36c3f86a1cff655f5cffdf45f371dddb8", size = 461398 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/ca/9d39feb60a9bc4a452d022b4b46fd29c1487bc26c18f4a5deaa2861f20e6/kombu-5.5.1-py3-none-any.whl", hash = "sha256:3b66add422e1655235c7c9244000600368ef6f2ba66278a5cf0ba2e7b2dc6425", size = 209672 }, +] + +[[package]] +name = "langdetect" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0e/72/a3add0e4eec4eb9e2569554f7c70f4a3c27712f40e3284d483e88094cc0e/langdetect-1.0.9.tar.gz", hash = "sha256:cbc1fef89f8d062739774bd51eda3da3274006b3661d199c2655f6b3f6d605a0", size = 981474 } + +[[package]] +name = "lark" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/60/bc7622aefb2aee1c0b4ba23c1446d3e30225c8770b38d7aedbfb65ca9d5a/lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80", size = 252132 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/00/d90b10b962b4277f5e64a78b6609968859ff86889f5b898c1a778c06ec00/lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c", size = 111036 }, +] + +[[package]] +name = "limits" +version = "4.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecated" }, + { name = "packaging" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/40/d5c6f5d2f774c231f80e9c3c9f0e7ee68baf0401070f54d9d5a2f8367800/limits-4.4.1.tar.gz", hash = "sha256:ec200a20ccb7292dd77035ded417984386333418cb9f9d579090e4194e831907", size = 86826 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/41/32fe0bba27a62eb7d0811251f2d75140edd43c6da28ec7254d9c3de58e38/limits-4.4.1-py3-none-any.whl", hash = "sha256:9fefa114e58fa3182d64b011cf6e000fe1cc4917cf3e9cbe8f6d4b70e52498d5", size = 61717 }, +] + +[[package]] +name = "log-symbols" +version = "0.0.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/45/87/e86645d758a4401c8c81914b6a88470634d1785c9ad09823fa4a1bd89250/log_symbols-0.0.14.tar.gz", hash = "sha256:cf0bbc6fe1a8e53f0d174a716bc625c4f87043cc21eb55dd8a740cfe22680556", size = 3211 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/5d/d710c38be68b0fb54e645048fe359c3904cc3cb64b2de9d40e1712bf110c/log_symbols-0.0.14-py3-none-any.whl", hash = "sha256:4952106ff8b605ab7d5081dd2c7e6ca7374584eff7086f499c06edd1ce56dcca", size = 3081 }, +] + +[[package]] +name = "luqum" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ply" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/eb/740c176edbfcc8a207f9b4af0476e9ad07b96481e7dc37b03e47669dc208/luqum-1.0.0.tar.gz", hash = "sha256:3e7bf3a94eaf8dc936c63de3019b306ee96e63575bc19372dad56114b194f8e0", size = 75950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/25/cfcd4c64369b24b5bf28ccada686f228440897bf001bc165c0dd4f8aebe3/luqum-1.0.0-py3-none-any.whl", hash = "sha256:25e8723aa7b4a522f296eaf8553f7c887b75a29cc92479293cb44333a3b0bc2b", size = 55276 }, +] + +[[package]] +name = "lxml" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ea/e2/3834472e7f18801e67a3cd6f3c203a5456d6f7f903cfb9a990e62098a2f3/lxml-5.2.1.tar.gz", hash = "sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306", size = 3675336 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/05/0b308e7a470f96d3d98e71043f2d6e62458eb3bcc1cb402a193bae2eb786/lxml-5.2.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:abc25c3cab9ec7fcd299b9bcb3b8d4a1231877e425c650fa1c7576c5107ab851", size = 8563956 }, + { url = "https://files.pythonhosted.org/packages/1f/a6/880a56f4a33700c24658a54609e6bf659d84b43dc007053cf6e417e0e667/lxml-5.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6935bbf153f9a965f1e07c2649c0849d29832487c52bb4a5c5066031d8b44fd5", size = 4646376 }, + { url = "https://files.pythonhosted.org/packages/71/a6/733dc617906a3921cbaf59ccb889a48cc8038ef228d774033c5c84ae5baf/lxml-5.2.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d793bebb202a6000390a5390078e945bbb49855c29c7e4d56a85901326c3b5d9", size = 5053123 }, + { url = "https://files.pythonhosted.org/packages/4a/6c/a0d195a7630339eb0127e20aacb1184330064cb809fdf771c1bab5caf170/lxml-5.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afd5562927cdef7c4f5550374acbc117fd4ecc05b5007bdfa57cc5355864e0a4", size = 4747766 }, + { url = "https://files.pythonhosted.org/packages/a5/e6/fbe182c09f81673e8242e0a0ed8c345cc14fbba1bfdf6ea0a09fcb89f431/lxml-5.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0e7259016bc4345a31af861fdce942b77c99049d6c2107ca07dc2bba2435c1d9", size = 5320879 }, + { url = "https://files.pythonhosted.org/packages/3b/fe/36b0f97404b720b5bb5167ef77710ef129c7f94b7e7551f5cc9f3e3b01fb/lxml-5.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:530e7c04f72002d2f334d5257c8a51bf409db0316feee7c87e4385043be136af", size = 4812940 }, + { url = "https://files.pythonhosted.org/packages/ab/42/6b1c3cc3310c291c2f4a576c6ce67ba712b0c777809355c8fcc5c28f5239/lxml-5.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59689a75ba8d7ffca577aefd017d08d659d86ad4585ccc73e43edbfc7476781a", size = 4915888 }, + { url = "https://files.pythonhosted.org/packages/d0/f1/3a0bd5064c764966e5d1dd0e75048960a7f38c833422ff5e10c8f4ad8363/lxml-5.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f9737bf36262046213a28e789cc82d82c6ef19c85a0cf05e75c670a33342ac2c", size = 4740296 }, + { url = "https://files.pythonhosted.org/packages/5c/41/e0391ffffd68e4bcd6ca60fa4694941bf9583bd18bc0827ede5d60021e50/lxml-5.2.1-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:3a74c4f27167cb95c1d4af1c0b59e88b7f3e0182138db2501c353555f7ec57f4", size = 5347080 }, + { url = "https://files.pythonhosted.org/packages/84/4c/195f220dd20814df9adfa6128fa824573efad59fbca0c33fc3890eb0e5a5/lxml-5.2.1-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:68a2610dbe138fa8c5826b3f6d98a7cfc29707b850ddcc3e21910a6fe51f6ca0", size = 4900172 }, + { url = "https://files.pythonhosted.org/packages/ac/9b/f97fac2e2bacbc91d1a15f24e3bdbb52e418591109393144a943bd502d2c/lxml-5.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f0a1bc63a465b6d72569a9bba9f2ef0334c4e03958e043da1920299100bc7c08", size = 4939879 }, + { url = "https://files.pythonhosted.org/packages/e4/b5/379aaae618fe2f74584d0227a6a41fbe365ae8b096de5f6fad0de5be94d3/lxml-5.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c2d35a1d047efd68027817b32ab1586c1169e60ca02c65d428ae815b593e65d4", size = 4789014 }, + { url = "https://files.pythonhosted.org/packages/b6/f1/07d724e3a9e03d345255a442daa8449ee6c2db250b3d19cb56a1cafecbd8/lxml-5.2.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:79bd05260359170f78b181b59ce871673ed01ba048deef4bf49a36ab3e72e80b", size = 5338633 }, + { url = "https://files.pythonhosted.org/packages/2d/3b/16a14eef29671f44b432eb97867e1c37e3953256fbc40c6d8a8e7e76b675/lxml-5.2.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:865bad62df277c04beed9478fe665b9ef63eb28fe026d5dedcb89b537d2e2ea6", size = 4784765 }, + { url = "https://files.pythonhosted.org/packages/77/b0/13cdbcdbd59c83b9050c11dde4609e85c3cbe2fd331f473f530949a1373b/lxml-5.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:44f6c7caff88d988db017b9b0e4ab04934f11e3e72d478031efc7edcac6c622f", size = 4928467 }, + { url = "https://files.pythonhosted.org/packages/e8/af/fb093dc0f2b10e66d829764117d4188de15fea7ac33a6956be5d03048df9/lxml-5.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71e97313406ccf55d32cc98a533ee05c61e15d11b99215b237346171c179c0b0", size = 4783603 }, + { url = "https://files.pythonhosted.org/packages/07/99/681ee4f6aa7b79ce9c3401611ca8390596065723b7ba90c7db189959fb5e/lxml-5.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:057cdc6b86ab732cf361f8b4d8af87cf195a1f6dc5b0ff3de2dced242c2015e0", size = 5372882 }, + { url = "https://files.pythonhosted.org/packages/60/cc/5da8e739ee63b7e6232d69f769259fd74cde01cbb7e3d9311f0ef7414eb9/lxml-5.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:f3bbbc998d42f8e561f347e798b85513ba4da324c2b3f9b7969e9c45b10f6169", size = 4871170 }, + { url = "https://files.pythonhosted.org/packages/a6/76/0569b713b6eade2c73792d2325705fe34585af7a98d26ac2b59a80045c99/lxml-5.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:491755202eb21a5e350dae00c6d9a17247769c64dcf62d8c788b5c135e179dc4", size = 4959114 }, + { url = "https://files.pythonhosted.org/packages/49/36/376574a1ac472c39a6ccc376f2d77f93dc58acc348e8f1d3eb8fa7dc1ae1/lxml-5.2.1-cp312-cp312-win32.whl", hash = "sha256:8de8f9d6caa7f25b204fc861718815d41cbcf27ee8f028c89c882a0cf4ae4134", size = 3487276 }, + { url = "https://files.pythonhosted.org/packages/37/a5/7b2e6152aefa0632871f77a202bb68eac52037e4498a6901be0f0458ffdc/lxml-5.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:f2a9efc53d5b714b8df2b4b3e992accf8ce5bbdfe544d74d5c6766c9e1146a3a", size = 3817449 }, +] + +[[package]] +name = "lxml-html-clean" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/f2/fe319e3c5cb505a361b95d1e0d0d793fe28d4dcc2fc39d3cae9324dc4233/lxml_html_clean-0.4.1.tar.gz", hash = "sha256:40c838bbcf1fc72ba4ce811fbb3135913017b27820d7c16e8bc412ae1d8bc00b", size = 21378 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/ba/2af7a60b45bf21375e111c1e2d5d721108d06c80e3d9a3cc1d767afe1731/lxml_html_clean-0.4.1-py3-none-any.whl", hash = "sha256:b704f2757e61d793b1c08bf5ad69e4c0b68d6696f4c3c1429982caf90050bcaf", size = 14114 }, +] + +[[package]] +name = "mako" +version = "1.3.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/62/4f/ddb1965901bc388958db9f0c991255b2c469349a741ae8c9cd8a562d70a6/mako-1.3.9.tar.gz", hash = "sha256:b5d65ff3462870feec922dbccf38f6efb44e5714d7b593a656be86663d8600ac", size = 392195 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/83/de0a49e7de540513f53ab5d2e105321dedeb08a8f5850f0208decf4390ec/Mako-1.3.9-py3-none-any.whl", hash = "sha256:95920acccb578427a9aa38e37a186b1e43156c87260d7ba18ca63aa4c7cbd3a1", size = 78456 }, +] + +[[package]] +name = "markdown" +version = "3.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349 }, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +] + +[[package]] +name = "marshmallow" +version = "3.26.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/5e/5e53d26b42ab75491cda89b871dab9e97c840bf12c63ec58a1919710cd06/marshmallow-3.26.1.tar.gz", hash = "sha256:e6d8affb6cb61d39d26402096dc0aee12d5a26d490a121f118d2e81dc0719dc6", size = 221825 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/75/51952c7b2d3873b44a0028b1bd26a25078c18f92f256608e8d1dc61b39fd/marshmallow-3.26.1-py3-none-any.whl", hash = "sha256:3350409f20a70a7e4e11a27661187b77cdcaeb20abca41c1454fe33636bea09c", size = 50878 }, +] + +[[package]] +name = "marshmallow-oneofschema" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "marshmallow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/75/8dd134f08375845910d134e50246fdfcab3f1d84ab3284bd09bb15f69be9/marshmallow_oneofschema-3.1.1.tar.gz", hash = "sha256:68b4a57d0281a04ac25d4eb7a4c5865a57090a0a8fd30fd6362c8e833ac6a6d9", size = 8684 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/81/3ef15337c19d3e3432945aad738081a5f54c16885277c7dff300b5f85b24/marshmallow_oneofschema-3.1.1-py3-none-any.whl", hash = "sha256:ff4cb2a488785ee8edd521a765682c2c80c78b9dc48894124531bdfa1ec9303b", size = 5726 }, +] + +[[package]] +name = "marshmallow-utils" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, + { name = "babel" }, + { name = "babel-edtf" }, + { name = "bleach" }, + { name = "edtf" }, + { name = "ftfy" }, + { name = "geojson" }, + { name = "idutils" }, + { name = "marshmallow" }, + { name = "marshmallow-oneofschema" }, + { name = "pycountry" }, + { name = "uritemplate" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/70/7fa046f85ad8fc48d4bdca79b823dcb43710afbfee8d3af75c26ee47a937/marshmallow-utils-0.10.0.tar.gz", hash = "sha256:20364ec5e881933f84d8dc6e84df7e74e5fb9de62568dda607b038f4fce4f531", size = 44770 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/23/91d97719050689dbca0465ee34d6a8b3e097984ffaf66ed0373dbaff7b49/marshmallow_utils-0.10.0-py2.py3-none-any.whl", hash = "sha256:7d51a0a61ba1c3f926673ea06361ec32c3d207965e7a468a63f9d000a3f3516d", size = 66117 }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, +] + +[[package]] +name = "maxminddb" +version = "2.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/57/ae/422ec0f3b6a40f23de9477c42fce90126a3994dd51d06b50582973c0088e/maxminddb-2.6.3.tar.gz", hash = "sha256:d2c3806baa7aa047aa1bac7419e7e353db435f88f09d51106a84dbacf645d254", size = 181376 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/c7/ddbb62accafeecb920d462df37b3c0102709feef2faf111b53fbf841b059/maxminddb-2.6.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2b0fef825b23df047876d2056cbb69fb8d8e4b965f744f674be75e16fb86a52e", size = 35228 }, + { url = "https://files.pythonhosted.org/packages/82/fe/2aa559147d123ed243bf7ef47dde5402b95c0620b9c88b986fcb4d5b672e/maxminddb-2.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a38faf03db15cc285009c0ddaacd04071b84ebd8ff7d773f700c7def695a291c", size = 35023 }, + { url = "https://files.pythonhosted.org/packages/c2/6f/c8a86c172a3e93c0d17ed6dd7858a66ec791626a27b76fdc07143a6a5189/maxminddb-2.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edab18a50470031fc8447bcd9285c9f5f952abef2b6db5579fe50665bdcda941", size = 90098 }, + { url = "https://files.pythonhosted.org/packages/93/eb/5be5fec6128898a69e09e3af348c933eebb2d0f38e4ff375b3138436476f/maxminddb-2.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:415dd5de87adc7640d3da2a8e7cf19a313c1a715cb84a3433f0e3b2d27665319", size = 89567 }, + { url = "https://files.pythonhosted.org/packages/77/2b/ca6e35cc8bbc4340f667a1531cc6cab24072326afd7b3424c8e89ad767dd/maxminddb-2.6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d78a02b70ededb3ba7317c24266217d7b68283e3be04cad0c34ee446a0217ee0", size = 87622 }, + { url = "https://files.pythonhosted.org/packages/aa/08/730374d10e7d3ec21f77ae76a7ada8c9347bba5bb55c82d0cb8b50db7dc5/maxminddb-2.6.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4b80275603bba6a95ed69d859d184dfa60bfd8e83cd4c8b722d7f7eaa9d95f8f", size = 92303 }, + { url = "https://files.pythonhosted.org/packages/61/dc/5fffe5def128ca998004826010801d5f242e07efe9d03da4cc2a0b8ad03b/maxminddb-2.6.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a6868438d1771c0bd0bbc95d84480c1ae04df72a85879e1ada42762250a00f59", size = 91211 }, + { url = "https://files.pythonhosted.org/packages/b8/28/ac699e0994f1a45aebfed0db42efa56845369a047adc249c2df482b03279/maxminddb-2.6.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:efd875d43c4207fb90e10d582e4394d8a04f7b55c83c4d6bc0593a7be450e04f", size = 92128 }, + { url = "https://files.pythonhosted.org/packages/1a/a1/d9ba3c10fcc3b1cdc432a28daeef5f4726d2125cc47e699c6da4b57cefa0/maxminddb-2.6.3-cp312-cp312-win32.whl", hash = "sha256:aadb9d12e887a1f52e8214e539e5d78338356fad4ef2a51931f6f7dbe56c2228", size = 34750 }, + { url = "https://files.pythonhosted.org/packages/04/c2/c4c9aece9e56d86becca10f39cb02d4baaae71dc37cc1d0c6ad0d6015793/maxminddb-2.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:7d6024d1e40244b5549c5e6063af109399a2f89503a24916b5139c4d0657f1c8", size = 36781 }, + { url = "https://files.pythonhosted.org/packages/cc/e3/a3218d7cd35c930a08f7d7301334f9c85aa0a28dbac3f50e3d43f3d70734/maxminddb-2.6.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9580b2cd017185db07baacd9d629ca01f3fe6f236528681c88a0209725376e9c", size = 35235 }, + { url = "https://files.pythonhosted.org/packages/85/40/11f23d1c1f6654618d87e995f56a789f00c1c07d5c986f9b14d81f04f90c/maxminddb-2.6.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:47828bed767b82c219ba7aa65f0cb03d7f7443d7270259ce931e133a40691d34", size = 35021 }, + { url = "https://files.pythonhosted.org/packages/68/7e/883adcb107fb45916328ecb40f980cc598dbcc7dfd2ccc871851c40836d6/maxminddb-2.6.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77112cb1a2e381de42c443d1bf222c58b9da203183bb2008dd370c3d2a587a4e", size = 90068 }, + { url = "https://files.pythonhosted.org/packages/2c/87/b57cf9ef4cf8b076f3b25df949b57c7b3ee0f4543f1f76f445afd313b96b/maxminddb-2.6.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:448d062e95242e3088df85fe7ed3f2890a9f4aea924bde336e9ff5d2337ca5fd", size = 89506 }, + { url = "https://files.pythonhosted.org/packages/ff/f8/cf746032f267ee25bd32f70d71a63e857fec91e19a0907db885bdbb7b0c1/maxminddb-2.6.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a59d72bf373c61da156fd43e2be6da802f68370a50a2205de84ee76916e05f9f", size = 87612 }, + { url = "https://files.pythonhosted.org/packages/c0/9e/ff5c93e8e589c1544cad2a457c1b7e4169a256c8655928266a9de6f21cac/maxminddb-2.6.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e867852037a8a26a24cfcf31b697dce63d488e1617af244c2895568d8f6c7a31", size = 92310 }, + { url = "https://files.pythonhosted.org/packages/99/44/56ed56377ba8c99f7eb3101479c063d46f18e5f0a9070432d74a2ed15f82/maxminddb-2.6.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5a1586260eac831d61c2665b26ca1ae3ad00caca57c8031346767f4527025311", size = 91227 }, + { url = "https://files.pythonhosted.org/packages/9b/58/cdb1a7c18a1946ad006657b52cb499e489d2b28a62490fd5aee14b356a55/maxminddb-2.6.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6eb23f842a72ab3096f9f9b1c292f4feb55a8d758567cb6d77637c2257a3187c", size = 92126 }, + { url = "https://files.pythonhosted.org/packages/39/94/4b37ffa77f8921a549805a62ce62f6fa453ea3c59c0dfcd584770fc59a8c/maxminddb-2.6.3-cp313-cp313-win32.whl", hash = "sha256:acf46e20709a27d2b519669888e3f53a37bc4204b98a0c690664c48ff8cb1364", size = 34751 }, + { url = "https://files.pythonhosted.org/packages/1e/af/638811134e1a33cf75c2d2be1b0b9b90dd1f43216a4ef1f24e223f646b46/maxminddb-2.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:3015afb00e6168837938dbe5fda40ace37442c22b292ccee27c1690fbf6078ed", size = 36790 }, +] + +[[package]] +name = "maxminddb-geolite2" +version = "2018.703" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "maxminddb" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/51/01/d12231a190659c269fec87a1144c9e243aadfccb0b18f7aca329661d9308/maxminddb-geolite2-2018.703.tar.gz", hash = "sha256:2bd118c5567f3a8323d6c5da23a6e6d52cfc09cd9987b54eb712cf6001a96e03", size = 26099794 } + +[[package]] +name = "mdit-py-plugins" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/03/a2ecab526543b152300717cf232bb4bb8605b6edb946c845016fa9c9c9fd/mdit_py_plugins-0.4.2.tar.gz", hash = "sha256:5f2cd1fdb606ddf152d37ec30e46101a60512bc0e5fa1a7002c36647b09e26b5", size = 43542 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/f7/7782a043553ee469c1ff49cfa1cdace2d6bf99a1f333cf38676b3ddf30da/mdit_py_plugins-0.4.2-py3-none-any.whl", hash = "sha256:0c673c3f889399a33b95e88d2f0d111b4447bdfea7f237dab2d488f459835636", size = 55316 }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, +] + +[[package]] +name = "mergedeep" +version = "1.3.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, +] + +[[package]] +name = "mistune" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410 }, +] + +[[package]] +name = "mkdocs" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "ghp-import" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mergedeep" }, + { name = "mkdocs-get-deps" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "pyyaml" }, + { name = "pyyaml-env-tag" }, + { name = "watchdog" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, +] + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mergedeep" }, + { name = "platformdirs" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, +] + +[[package]] +name = "mkdocs-jupyter" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipython" }, + { name = "mkdocs" }, + { name = "nbconvert" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/32/e3/0e6f68949d50130bd91e2fab30fc4cce627ca059cd8cb2c94fd1e547c721/mkdocs-jupyter-0.12.0.tar.gz", hash = "sha256:fd3c3bedd74fa7dacaf10e1270356a3d23ce48bcaaaeeae48389d03d5aa77557", size = 642400 } + +[[package]] +name = "mkdocs-material" +version = "8.5.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jinja2" }, + { name = "markdown" }, + { name = "mkdocs" }, + { name = "mkdocs-material-extensions" }, + { name = "pygments" }, + { name = "pymdown-extensions" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/9b/a4d3ddd4a53e6014f6818c61923d0085f8c9a55778cd2dc3deea1885696f/mkdocs_material-8.5.11.tar.gz", hash = "sha256:b0ea0513fd8cab323e8a825d6692ea07fa83e917bb5db042e523afecc7064ab7", size = 3533290 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/aa/62e1d18c61c278ef7afceb4762e442fb0487e12d53ab700f620fb0cfc99a/mkdocs_material-8.5.11-py3-none-any.whl", hash = "sha256:c907b4b052240a5778074a30a78f31a1f8ff82d7012356dc26898b97559f082e", size = 7571821 }, +] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, +] + +[[package]] +name = "msgpack" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/d0/7555686ae7ff5731205df1012ede15dd9d927f6227ea151e901c7406af4f/msgpack-1.1.0.tar.gz", hash = "sha256:dd432ccc2c72b914e4cb77afce64aab761c1137cc698be3984eee260bcb2896e", size = 167260 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/d6/716b7ca1dbde63290d2973d22bbef1b5032ca634c3ff4384a958ec3f093a/msgpack-1.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d46cf9e3705ea9485687aa4001a76e44748b609d260af21c4ceea7f2212a501d", size = 152421 }, + { url = "https://files.pythonhosted.org/packages/70/da/5312b067f6773429cec2f8f08b021c06af416bba340c912c2ec778539ed6/msgpack-1.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5dbad74103df937e1325cc4bfeaf57713be0b4f15e1c2da43ccdd836393e2ea2", size = 85277 }, + { url = "https://files.pythonhosted.org/packages/28/51/da7f3ae4462e8bb98af0d5bdf2707f1b8c65a0d4f496e46b6afb06cbc286/msgpack-1.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58dfc47f8b102da61e8949708b3eafc3504509a5728f8b4ddef84bd9e16ad420", size = 82222 }, + { url = "https://files.pythonhosted.org/packages/33/af/dc95c4b2a49cff17ce47611ca9ba218198806cad7796c0b01d1e332c86bb/msgpack-1.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4676e5be1b472909b2ee6356ff425ebedf5142427842aa06b4dfd5117d1ca8a2", size = 392971 }, + { url = "https://files.pythonhosted.org/packages/f1/54/65af8de681fa8255402c80eda2a501ba467921d5a7a028c9c22a2c2eedb5/msgpack-1.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17fb65dd0bec285907f68b15734a993ad3fc94332b5bb21b0435846228de1f39", size = 401403 }, + { url = "https://files.pythonhosted.org/packages/97/8c/e333690777bd33919ab7024269dc3c41c76ef5137b211d776fbb404bfead/msgpack-1.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a51abd48c6d8ac89e0cfd4fe177c61481aca2d5e7ba42044fd218cfd8ea9899f", size = 385356 }, + { url = "https://files.pythonhosted.org/packages/57/52/406795ba478dc1c890559dd4e89280fa86506608a28ccf3a72fbf45df9f5/msgpack-1.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2137773500afa5494a61b1208619e3871f75f27b03bcfca7b3a7023284140247", size = 383028 }, + { url = "https://files.pythonhosted.org/packages/e7/69/053b6549bf90a3acadcd8232eae03e2fefc87f066a5b9fbb37e2e608859f/msgpack-1.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:398b713459fea610861c8a7b62a6fec1882759f308ae0795b5413ff6a160cf3c", size = 391100 }, + { url = "https://files.pythonhosted.org/packages/23/f0/d4101d4da054f04274995ddc4086c2715d9b93111eb9ed49686c0f7ccc8a/msgpack-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:06f5fd2f6bb2a7914922d935d3b8bb4a7fff3a9a91cfce6d06c13bc42bec975b", size = 394254 }, + { url = "https://files.pythonhosted.org/packages/1c/12/cf07458f35d0d775ff3a2dc5559fa2e1fcd06c46f1ef510e594ebefdca01/msgpack-1.1.0-cp312-cp312-win32.whl", hash = "sha256:ad33e8400e4ec17ba782f7b9cf868977d867ed784a1f5f2ab46e7ba53b6e1e1b", size = 69085 }, + { url = "https://files.pythonhosted.org/packages/73/80/2708a4641f7d553a63bc934a3eb7214806b5b39d200133ca7f7afb0a53e8/msgpack-1.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:115a7af8ee9e8cddc10f87636767857e7e3717b7a2e97379dc2054712693e90f", size = 75347 }, + { url = "https://files.pythonhosted.org/packages/c8/b0/380f5f639543a4ac413e969109978feb1f3c66e931068f91ab6ab0f8be00/msgpack-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:071603e2f0771c45ad9bc65719291c568d4edf120b44eb36324dcb02a13bfddf", size = 151142 }, + { url = "https://files.pythonhosted.org/packages/c8/ee/be57e9702400a6cb2606883d55b05784fada898dfc7fd12608ab1fdb054e/msgpack-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0f92a83b84e7c0749e3f12821949d79485971f087604178026085f60ce109330", size = 84523 }, + { url = "https://files.pythonhosted.org/packages/7e/3a/2919f63acca3c119565449681ad08a2f84b2171ddfcff1dba6959db2cceb/msgpack-1.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a1964df7b81285d00a84da4e70cb1383f2e665e0f1f2a7027e683956d04b734", size = 81556 }, + { url = "https://files.pythonhosted.org/packages/7c/43/a11113d9e5c1498c145a8925768ea2d5fce7cbab15c99cda655aa09947ed/msgpack-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59caf6a4ed0d164055ccff8fe31eddc0ebc07cf7326a2aaa0dbf7a4001cd823e", size = 392105 }, + { url = "https://files.pythonhosted.org/packages/2d/7b/2c1d74ca6c94f70a1add74a8393a0138172207dc5de6fc6269483519d048/msgpack-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0907e1a7119b337971a689153665764adc34e89175f9a34793307d9def08e6ca", size = 399979 }, + { url = "https://files.pythonhosted.org/packages/82/8c/cf64ae518c7b8efc763ca1f1348a96f0e37150061e777a8ea5430b413a74/msgpack-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65553c9b6da8166e819a6aa90ad15288599b340f91d18f60b2061f402b9a4915", size = 383816 }, + { url = "https://files.pythonhosted.org/packages/69/86/a847ef7a0f5ef3fa94ae20f52a4cacf596a4e4a010197fbcc27744eb9a83/msgpack-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7a946a8992941fea80ed4beae6bff74ffd7ee129a90b4dd5cf9c476a30e9708d", size = 380973 }, + { url = "https://files.pythonhosted.org/packages/aa/90/c74cf6e1126faa93185d3b830ee97246ecc4fe12cf9d2d31318ee4246994/msgpack-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:4b51405e36e075193bc051315dbf29168d6141ae2500ba8cd80a522964e31434", size = 387435 }, + { url = "https://files.pythonhosted.org/packages/7a/40/631c238f1f338eb09f4acb0f34ab5862c4e9d7eda11c1b685471a4c5ea37/msgpack-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4c01941fd2ff87c2a934ee6055bda4ed353a7846b8d4f341c428109e9fcde8c", size = 399082 }, + { url = "https://files.pythonhosted.org/packages/e9/1b/fa8a952be252a1555ed39f97c06778e3aeb9123aa4cccc0fd2acd0b4e315/msgpack-1.1.0-cp313-cp313-win32.whl", hash = "sha256:7c9a35ce2c2573bada929e0b7b3576de647b0defbd25f5139dcdaba0ae35a4cc", size = 69037 }, + { url = "https://files.pythonhosted.org/packages/b6/bc/8bd826dd03e022153bfa1766dcdec4976d6c818865ed54223d71f07862b3/msgpack-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:bce7d9e614a04d0883af0b3d4d501171fbfca038f12c77fa838d9f198147a23f", size = 75140 }, +] + +[[package]] +name = "multidict" +version = "6.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/4a/7874ca44a1c9b23796c767dd94159f6c17e31c0e7d090552a1c623247d82/multidict-6.2.0.tar.gz", hash = "sha256:0085b0afb2446e57050140240a8595846ed64d1cbd26cef936bfab3192c673b8", size = 71066 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/e2/0153a8db878aef9b2397be81e62cbc3b32ca9b94e0f700b103027db9d506/multidict-6.2.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:437c33561edb6eb504b5a30203daf81d4a9b727e167e78b0854d9a4e18e8950b", size = 49204 }, + { url = "https://files.pythonhosted.org/packages/bb/9d/5ccb3224a976d1286f360bb4e89e67b7cdfb87336257fc99be3c17f565d7/multidict-6.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9f49585f4abadd2283034fc605961f40c638635bc60f5162276fec075f2e37a4", size = 29807 }, + { url = "https://files.pythonhosted.org/packages/62/32/ef20037f51b84b074a89bab5af46d4565381c3f825fc7cbfc19c1ee156be/multidict-6.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5dd7106d064d05896ce28c97da3f46caa442fe5a43bc26dfb258e90853b39b44", size = 30000 }, + { url = "https://files.pythonhosted.org/packages/97/81/b0a7560bfc3ec72606232cd7e60159e09b9cf29e66014d770c1315868fa2/multidict-6.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e25b11a0417475f093d0f0809a149aff3943c2c56da50fdf2c3c88d57fe3dfbd", size = 131820 }, + { url = "https://files.pythonhosted.org/packages/49/3b/768bfc0e41179fbccd3a22925329a11755b7fdd53bec66dbf6b8772f0bce/multidict-6.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac380cacdd3b183338ba63a144a34e9044520a6fb30c58aa14077157a033c13e", size = 136272 }, + { url = "https://files.pythonhosted.org/packages/71/ac/fd2be3fe98ff54e7739448f771ba730d42036de0870737db9ae34bb8efe9/multidict-6.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:61d5541f27533f803a941d3a3f8a3d10ed48c12cf918f557efcbf3cd04ef265c", size = 135233 }, + { url = "https://files.pythonhosted.org/packages/93/76/1657047da771315911a927b364a32dafce4135b79b64208ce4ac69525c56/multidict-6.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:facaf11f21f3a4c51b62931feb13310e6fe3475f85e20d9c9fdce0d2ea561b87", size = 132861 }, + { url = "https://files.pythonhosted.org/packages/19/a5/9f07ffb9bf68b8aaa406c2abee27ad87e8b62a60551587b8e59ee91aea84/multidict-6.2.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:095a2eabe8c43041d3e6c2cb8287a257b5f1801c2d6ebd1dd877424f1e89cf29", size = 122166 }, + { url = "https://files.pythonhosted.org/packages/95/23/b5ce3318d9d6c8f105c3679510f9d7202980545aad8eb4426313bd8da3ee/multidict-6.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a0cc398350ef31167e03f3ca7c19313d4e40a662adcb98a88755e4e861170bdd", size = 136052 }, + { url = "https://files.pythonhosted.org/packages/ce/5c/02cffec58ffe120873dce520af593415b91cc324be0345f534ad3637da4e/multidict-6.2.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7c611345bbe7cb44aabb877cb94b63e86f2d0db03e382667dbd037866d44b4f8", size = 130094 }, + { url = "https://files.pythonhosted.org/packages/49/f3/3b19a83f4ebf53a3a2a0435f3e447aa227b242ba3fd96a92404b31fb3543/multidict-6.2.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8cd1a0644ccaf27e9d2f6d9c9474faabee21f0578fe85225cc5af9a61e1653df", size = 140962 }, + { url = "https://files.pythonhosted.org/packages/cc/1a/c916b54fb53168c24cb6a3a0795fd99d0a59a0ea93fa9f6edeff5565cb20/multidict-6.2.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:89b3857652183b8206a891168af47bac10b970d275bba1f6ee46565a758c078d", size = 138082 }, + { url = "https://files.pythonhosted.org/packages/ef/1a/dcb7fb18f64b3727c61f432c1e1a0d52b3924016124e4bbc8a7d2e4fa57b/multidict-6.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:125dd82b40f8c06d08d87b3510beaccb88afac94e9ed4a6f6c71362dc7dbb04b", size = 136019 }, + { url = "https://files.pythonhosted.org/packages/fb/02/7695485375106f5c542574f70e1968c391f86fa3efc9f1fd76aac0af7237/multidict-6.2.0-cp312-cp312-win32.whl", hash = "sha256:76b34c12b013d813e6cb325e6bd4f9c984db27758b16085926bbe7ceeaace626", size = 26676 }, + { url = "https://files.pythonhosted.org/packages/3c/f5/f147000fe1f4078160157b15b0790fff0513646b0f9b7404bf34007a9b44/multidict-6.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:0b183a959fb88ad1be201de2c4bdf52fa8e46e6c185d76201286a97b6f5ee65c", size = 28899 }, + { url = "https://files.pythonhosted.org/packages/a4/6c/5df5590b1f9a821154589df62ceae247537b01ab26b0aa85997c35ca3d9e/multidict-6.2.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:5c5e7d2e300d5cb3b2693b6d60d3e8c8e7dd4ebe27cd17c9cb57020cac0acb80", size = 49151 }, + { url = "https://files.pythonhosted.org/packages/d5/ca/c917fbf1be989cd7ea9caa6f87e9c33844ba8d5fbb29cd515d4d2833b84c/multidict-6.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:256d431fe4583c5f1e0f2e9c4d9c22f3a04ae96009b8cfa096da3a8723db0a16", size = 29803 }, + { url = "https://files.pythonhosted.org/packages/22/19/d97086fc96f73acf36d4dbe65c2c4175911969df49c4e94ef082be59d94e/multidict-6.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a3c0ff89fe40a152e77b191b83282c9664357dce3004032d42e68c514ceff27e", size = 29947 }, + { url = "https://files.pythonhosted.org/packages/e3/3b/203476b6e915c3f51616d5f87230c556e2f24b168c14818a3d8dae242b1b/multidict-6.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef7d48207926edbf8b16b336f779c557dd8f5a33035a85db9c4b0febb0706817", size = 130369 }, + { url = "https://files.pythonhosted.org/packages/c6/4f/67470007cf03b2bb6df8ae6d716a8eeb0a7d19e0c8dba4e53fa338883bca/multidict-6.2.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3c099d3899b14e1ce52262eb82a5f5cb92157bb5106bf627b618c090a0eadc", size = 135231 }, + { url = "https://files.pythonhosted.org/packages/6d/f5/7a5ce64dc9a3fecc7d67d0b5cb9c262c67e0b660639e5742c13af63fd80f/multidict-6.2.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e16e7297f29a544f49340012d6fc08cf14de0ab361c9eb7529f6a57a30cbfda1", size = 133634 }, + { url = "https://files.pythonhosted.org/packages/05/93/ab2931907e318c0437a4cd156c9cfff317ffb33d99ebbfe2d64200a870f7/multidict-6.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:042028348dc5a1f2be6c666437042a98a5d24cee50380f4c0902215e5ec41844", size = 131349 }, + { url = "https://files.pythonhosted.org/packages/54/aa/ab8eda83a6a85f5b4bb0b1c28e62b18129b14519ef2e0d4cfd5f360da73c/multidict-6.2.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08549895e6a799bd551cf276f6e59820aa084f0f90665c0f03dd3a50db5d3c48", size = 120861 }, + { url = "https://files.pythonhosted.org/packages/15/2f/7d08ea7c5d9f45786893b4848fad59ec8ea567367d4234691a721e4049a1/multidict-6.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4ccfd74957ef53fa7380aaa1c961f523d582cd5e85a620880ffabd407f8202c0", size = 134611 }, + { url = "https://files.pythonhosted.org/packages/8b/07/387047bb1eac563981d397a7f85c75b306df1fff3c20b90da5a6cf6e487e/multidict-6.2.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:83b78c680d4b15d33042d330c2fa31813ca3974197bddb3836a5c635a5fd013f", size = 128955 }, + { url = "https://files.pythonhosted.org/packages/8d/6e/7ae18f764a5282c2d682f1c90c6b2a0f6490327730170139a7a63bf3bb20/multidict-6.2.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b4c153863dd6569f6511845922c53e39c8d61f6e81f228ad5443e690fca403de", size = 139759 }, + { url = "https://files.pythonhosted.org/packages/b6/f4/c1b3b087b9379b9e56229bcf6570b9a963975c205a5811ac717284890598/multidict-6.2.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:98aa8325c7f47183b45588af9c434533196e241be0a4e4ae2190b06d17675c02", size = 136426 }, + { url = "https://files.pythonhosted.org/packages/a2/0e/ef7b39b161ffd40f9e25dd62e59644b2ccaa814c64e9573f9bc721578419/multidict-6.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9e658d1373c424457ddf6d55ec1db93c280b8579276bebd1f72f113072df8a5d", size = 134648 }, + { url = "https://files.pythonhosted.org/packages/37/5c/7905acd0ca411c97bcae62ab167d9922f0c5a1d316b6d3af875d4bda3551/multidict-6.2.0-cp313-cp313-win32.whl", hash = "sha256:3157126b028c074951839233647bd0e30df77ef1fedd801b48bdcad242a60f4e", size = 26680 }, + { url = "https://files.pythonhosted.org/packages/89/36/96b071d1dad6ac44fe517e4250329e753787bb7a63967ef44bb9b3a659f6/multidict-6.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:2e87f1926e91855ae61769ba3e3f7315120788c099677e0842e697b0bfb659f2", size = 28942 }, + { url = "https://files.pythonhosted.org/packages/f5/05/d686cd2a12d648ecd434675ee8daa2901a80f477817e89ab3b160de5b398/multidict-6.2.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:2529ddbdaa424b2c6c2eb668ea684dd6b75b839d0ad4b21aad60c168269478d7", size = 50807 }, + { url = "https://files.pythonhosted.org/packages/4c/1f/c7db5aac8fea129fa4c5a119e3d279da48d769138ae9624d1234aa01a06f/multidict-6.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:13551d0e2d7201f0959725a6a769b6f7b9019a168ed96006479c9ac33fe4096b", size = 30474 }, + { url = "https://files.pythonhosted.org/packages/e5/f1/1fb27514f4d73cea165429dcb7d90cdc4a45445865832caa0c50dd545420/multidict-6.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d1996ee1330e245cd3aeda0887b4409e3930524c27642b046e4fae88ffa66c5e", size = 30841 }, + { url = "https://files.pythonhosted.org/packages/d6/6b/9487169e549a23c8958edbb332afaf1ab55d61f0c03cb758ee07ff8f74fb/multidict-6.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c537da54ce4ff7c15e78ab1292e5799d0d43a2108e006578a57f531866f64025", size = 148658 }, + { url = "https://files.pythonhosted.org/packages/d7/22/79ebb2e4f70857c94999ce195db76886ae287b1b6102da73df24dcad4903/multidict-6.2.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f249badb360b0b4d694307ad40f811f83df4da8cef7b68e429e4eea939e49dd", size = 151988 }, + { url = "https://files.pythonhosted.org/packages/49/5d/63b17f3c1a2861587d26705923a94eb6b2600e5222d6b0d513bce5a78720/multidict-6.2.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48d39b1824b8d6ea7de878ef6226efbe0773f9c64333e1125e0efcfdd18a24c7", size = 148432 }, + { url = "https://files.pythonhosted.org/packages/a3/22/55204eec45c4280fa431c11494ad64d6da0dc89af76282fc6467432360a0/multidict-6.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b99aac6bb2c37db336fa03a39b40ed4ef2818bf2dfb9441458165ebe88b793af", size = 143161 }, + { url = "https://files.pythonhosted.org/packages/97/e6/202b2cf5af161228767acab8bc49e73a91f4a7de088c9c71f3c02950a030/multidict-6.2.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07bfa8bc649783e703263f783f73e27fef8cd37baaad4389816cf6a133141331", size = 136820 }, + { url = "https://files.pythonhosted.org/packages/7d/16/dbedae0e94c7edc48fddef0c39483f2313205d9bc566fd7f11777b168616/multidict-6.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b2c00ad31fbc2cbac85d7d0fcf90853b2ca2e69d825a2d3f3edb842ef1544a2c", size = 150875 }, + { url = "https://files.pythonhosted.org/packages/f3/04/38ccf25d4bf8beef76a22bad7d9833fd088b4594c9765fe6fede39aa6c89/multidict-6.2.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:0d57a01a2a9fa00234aace434d8c131f0ac6e0ac6ef131eda5962d7e79edfb5b", size = 142050 }, + { url = "https://files.pythonhosted.org/packages/9e/89/4f6b43386e7b79a4aad560d751981a0a282a1943c312ac72f940d7cf8f9f/multidict-6.2.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:abf5b17bc0cf626a8a497d89ac691308dbd825d2ac372aa990b1ca114e470151", size = 154117 }, + { url = "https://files.pythonhosted.org/packages/24/e3/3dde5b193f86d30ad6400bd50e116b0df1da3f0c7d419661e3bd79e5ad86/multidict-6.2.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:f7716f7e7138252d88607228ce40be22660d6608d20fd365d596e7ca0738e019", size = 149408 }, + { url = "https://files.pythonhosted.org/packages/df/b2/ec1e27e8e3da12fcc9053e1eae2f6b50faa8708064d83ea25aa7fb77ffd2/multidict-6.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d5a36953389f35f0a4e88dc796048829a2f467c9197265504593f0e420571547", size = 145767 }, + { url = "https://files.pythonhosted.org/packages/3a/8e/c07a648a9d592fa9f3a19d1c7e1c7738ba95aff90db967a5a09cff1e1f37/multidict-6.2.0-cp313-cp313t-win32.whl", hash = "sha256:e653d36b1bf48fa78c7fcebb5fa679342e025121ace8c87ab05c1cefd33b34fc", size = 28950 }, + { url = "https://files.pythonhosted.org/packages/dc/a9/bebb5485b94d7c09831638a4df9a1a924c32431a750723f0bf39cd16a787/multidict-6.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ca23db5fb195b5ef4fd1f77ce26cadefdf13dba71dab14dadd29b34d457d7c44", size = 32001 }, + { url = "https://files.pythonhosted.org/packages/9c/fd/b247aec6add5601956d440488b7f23151d8343747e82c038af37b28d6098/multidict-6.2.0-py3-none-any.whl", hash = "sha256:5d26547423e5e71dcc562c4acdc134b900640a39abd9066d7326a7cc2324c530", size = 10266 }, +] + +[[package]] +name = "mypy" +version = "1.15.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, + { url = "https://files.pythonhosted.org/packages/6a/9b/fd2e05d6ffff24d912f150b87db9e364fa8282045c875654ce7e32fffa66/mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445", size = 10788592 }, + { url = "https://files.pythonhosted.org/packages/74/37/b246d711c28a03ead1fd906bbc7106659aed7c089d55fe40dd58db812628/mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d", size = 9753611 }, + { url = "https://files.pythonhosted.org/packages/a6/ac/395808a92e10cfdac8003c3de9a2ab6dc7cde6c0d2a4df3df1b815ffd067/mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5", size = 11438443 }, + { url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541 }, + { url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348 }, + { url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648 }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, +] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/a4/1ab47638b92648243faf97a5aeb6ea83059cc3624972ab6b8d2316078d3f/mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782", size = 4433 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d", size = 4695 }, +] + +[[package]] +name = "myst-parser" +version = "4.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docutils" }, + { name = "jinja2" }, + { name = "markdown-it-py" }, + { name = "mdit-py-plugins" }, + { name = "pyyaml" }, + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/a5/9626ba4f73555b3735ad86247a8077d4603aa8628537687c839ab08bfe44/myst_parser-4.0.1.tar.gz", hash = "sha256:5cfea715e4f3574138aecbf7d54132296bfd72bb614d31168f48c477a830a7c4", size = 93985 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/df/76d0321c3797b54b60fef9ec3bd6f4cfd124b9e422182156a1dd418722cf/myst_parser-4.0.1-py3-none-any.whl", hash = "sha256:9134e88959ec3b5780aedf8a99680ea242869d012e8821db3126d427edc9c95d", size = 84579 }, +] + +[[package]] +name = "nameparser" +version = "1.1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/f6/418a49f9e7a6d98f938e712b1356eaff2247bc1ce679a851ac0d02022330/nameparser-1.1.3.tar.gz", hash = "sha256:aa2400ad71ccf8070675b40311a257c934659f91854b154e1ba6c264761c049d", size = 36504 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/41/dd01b1f0ccffe618efe2d66ecde6964b0fada9d0f4891542675a9e722498/nameparser-1.1.3-py2.py3-none-any.whl", hash = "sha256:08ccda98681d59751c82052d52f185bc52f99d43e87d46b85c015a9096ecfa66", size = 24669 }, +] + +[[package]] +name = "nbclient" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, +] + +[[package]] +name = "nbconvert" +version = "7.16.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525 }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, +] + +[[package]] +name = "nbstripout" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "nbformat" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/90/fb/e2ada676652db3dbbd2da0d7f366f508b5f54dfc3b8f1995ddb3cb34d385/nbstripout-0.6.2.tar.gz", hash = "sha256:ada2c70a9b72dc96e2433c40d7bd8b27ad8b54217d5d7a89c4e352877743a37d", size = 24860 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/9c/56301d6d2165f3bc5c4dd520a827c1d5790b2b91664230ff9188e7416e53/nbstripout-0.6.2-py2.py3-none-any.whl", hash = "sha256:2eddf4033db5bbe9e96bbb85d09746a050cb662f31601c786a4cf78552ae5303", size = 15765 }, +] + +[[package]] +name = "numpy" +version = "2.2.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/78/31103410a57bc2c2b93a3597340a8119588571f6a4539067546cb9a0bfac/numpy-2.2.4.tar.gz", hash = "sha256:9ba03692a45d3eef66559efe1d1096c4b9b75c0986b5dff5530c378fb8331d4f", size = 20270701 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/30/182db21d4f2a95904cec1a6f779479ea1ac07c0647f064dea454ec650c42/numpy-2.2.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a7b9084668aa0f64e64bd00d27ba5146ef1c3a8835f3bd912e7a9e01326804c4", size = 20947156 }, + { url = "https://files.pythonhosted.org/packages/24/6d/9483566acfbda6c62c6bc74b6e981c777229d2af93c8eb2469b26ac1b7bc/numpy-2.2.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:dbe512c511956b893d2dacd007d955a3f03d555ae05cfa3ff1c1ff6df8851854", size = 14133092 }, + { url = "https://files.pythonhosted.org/packages/27/f6/dba8a258acbf9d2bed2525cdcbb9493ef9bae5199d7a9cb92ee7e9b2aea6/numpy-2.2.4-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:bb649f8b207ab07caebba230d851b579a3c8711a851d29efe15008e31bb4de24", size = 5163515 }, + { url = "https://files.pythonhosted.org/packages/62/30/82116199d1c249446723c68f2c9da40d7f062551036f50b8c4caa42ae252/numpy-2.2.4-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:f34dc300df798742b3d06515aa2a0aee20941c13579d7a2f2e10af01ae4901ee", size = 6696558 }, + { url = "https://files.pythonhosted.org/packages/0e/b2/54122b3c6df5df3e87582b2e9430f1bdb63af4023c739ba300164c9ae503/numpy-2.2.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3f7ac96b16955634e223b579a3e5798df59007ca43e8d451a0e6a50f6bfdfba", size = 14084742 }, + { url = "https://files.pythonhosted.org/packages/02/e2/e2cbb8d634151aab9528ef7b8bab52ee4ab10e076509285602c2a3a686e0/numpy-2.2.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f92084defa704deadd4e0a5ab1dc52d8ac9e8a8ef617f3fbb853e79b0ea3592", size = 16134051 }, + { url = "https://files.pythonhosted.org/packages/8e/21/efd47800e4affc993e8be50c1b768de038363dd88865920439ef7b422c60/numpy-2.2.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7a4e84a6283b36632e2a5b56e121961f6542ab886bc9e12f8f9818b3c266bfbb", size = 15578972 }, + { url = "https://files.pythonhosted.org/packages/04/1e/f8bb88f6157045dd5d9b27ccf433d016981032690969aa5c19e332b138c0/numpy-2.2.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:11c43995255eb4127115956495f43e9343736edb7fcdb0d973defd9de14cd84f", size = 17898106 }, + { url = "https://files.pythonhosted.org/packages/2b/93/df59a5a3897c1f036ae8ff845e45f4081bb06943039ae28a3c1c7c780f22/numpy-2.2.4-cp312-cp312-win32.whl", hash = "sha256:65ef3468b53269eb5fdb3a5c09508c032b793da03251d5f8722b1194f1790c00", size = 6311190 }, + { url = "https://files.pythonhosted.org/packages/46/69/8c4f928741c2a8efa255fdc7e9097527c6dc4e4df147e3cadc5d9357ce85/numpy-2.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:2aad3c17ed2ff455b8eaafe06bcdae0062a1db77cb99f4b9cbb5f4ecb13c5146", size = 12644305 }, + { url = "https://files.pythonhosted.org/packages/2a/d0/bd5ad792e78017f5decfb2ecc947422a3669a34f775679a76317af671ffc/numpy-2.2.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:1cf4e5c6a278d620dee9ddeb487dc6a860f9b199eadeecc567f777daace1e9e7", size = 20933623 }, + { url = "https://files.pythonhosted.org/packages/c3/bc/2b3545766337b95409868f8e62053135bdc7fa2ce630aba983a2aa60b559/numpy-2.2.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1974afec0b479e50438fc3648974268f972e2d908ddb6d7fb634598cdb8260a0", size = 14148681 }, + { url = "https://files.pythonhosted.org/packages/6a/70/67b24d68a56551d43a6ec9fe8c5f91b526d4c1a46a6387b956bf2d64744e/numpy-2.2.4-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:79bd5f0a02aa16808fcbc79a9a376a147cc1045f7dfe44c6e7d53fa8b8a79392", size = 5148759 }, + { url = "https://files.pythonhosted.org/packages/1c/8b/e2fc8a75fcb7be12d90b31477c9356c0cbb44abce7ffb36be39a0017afad/numpy-2.2.4-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:3387dd7232804b341165cedcb90694565a6015433ee076c6754775e85d86f1fc", size = 6683092 }, + { url = "https://files.pythonhosted.org/packages/13/73/41b7b27f169ecf368b52533edb72e56a133f9e86256e809e169362553b49/numpy-2.2.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f527d8fdb0286fd2fd97a2a96c6be17ba4232da346931d967a0630050dfd298", size = 14081422 }, + { url = "https://files.pythonhosted.org/packages/4b/04/e208ff3ae3ddfbafc05910f89546382f15a3f10186b1f56bd99f159689c2/numpy-2.2.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bce43e386c16898b91e162e5baaad90c4b06f9dcbe36282490032cec98dc8ae7", size = 16132202 }, + { url = "https://files.pythonhosted.org/packages/fe/bc/2218160574d862d5e55f803d88ddcad88beff94791f9c5f86d67bd8fbf1c/numpy-2.2.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:31504f970f563d99f71a3512d0c01a645b692b12a63630d6aafa0939e52361e6", size = 15573131 }, + { url = "https://files.pythonhosted.org/packages/a5/78/97c775bc4f05abc8a8426436b7cb1be806a02a2994b195945600855e3a25/numpy-2.2.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:81413336ef121a6ba746892fad881a83351ee3e1e4011f52e97fba79233611fd", size = 17894270 }, + { url = "https://files.pythonhosted.org/packages/b9/eb/38c06217a5f6de27dcb41524ca95a44e395e6a1decdc0c99fec0832ce6ae/numpy-2.2.4-cp313-cp313-win32.whl", hash = "sha256:f486038e44caa08dbd97275a9a35a283a8f1d2f0ee60ac260a1790e76660833c", size = 6308141 }, + { url = "https://files.pythonhosted.org/packages/52/17/d0dd10ab6d125c6d11ffb6dfa3423c3571befab8358d4f85cd4471964fcd/numpy-2.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:207a2b8441cc8b6a2a78c9ddc64d00d20c303d79fba08c577752f080c4007ee3", size = 12636885 }, + { url = "https://files.pythonhosted.org/packages/fa/e2/793288ede17a0fdc921172916efb40f3cbc2aa97e76c5c84aba6dc7e8747/numpy-2.2.4-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8120575cb4882318c791f839a4fd66161a6fa46f3f0a5e613071aae35b5dd8f8", size = 20961829 }, + { url = "https://files.pythonhosted.org/packages/3a/75/bb4573f6c462afd1ea5cbedcc362fe3e9bdbcc57aefd37c681be1155fbaa/numpy-2.2.4-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a761ba0fa886a7bb33c6c8f6f20213735cb19642c580a931c625ee377ee8bd39", size = 14161419 }, + { url = "https://files.pythonhosted.org/packages/03/68/07b4cd01090ca46c7a336958b413cdbe75002286295f2addea767b7f16c9/numpy-2.2.4-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:ac0280f1ba4a4bfff363a99a6aceed4f8e123f8a9b234c89140f5e894e452ecd", size = 5196414 }, + { url = "https://files.pythonhosted.org/packages/a5/fd/d4a29478d622fedff5c4b4b4cedfc37a00691079623c0575978d2446db9e/numpy-2.2.4-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:879cf3a9a2b53a4672a168c21375166171bc3932b7e21f622201811c43cdd3b0", size = 6709379 }, + { url = "https://files.pythonhosted.org/packages/41/78/96dddb75bb9be730b87c72f30ffdd62611aba234e4e460576a068c98eff6/numpy-2.2.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f05d4198c1bacc9124018109c5fba2f3201dbe7ab6e92ff100494f236209c960", size = 14051725 }, + { url = "https://files.pythonhosted.org/packages/00/06/5306b8199bffac2a29d9119c11f457f6c7d41115a335b78d3f86fad4dbe8/numpy-2.2.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f085ce2e813a50dfd0e01fbfc0c12bbe5d2063d99f8b29da30e544fb6483b8", size = 16101638 }, + { url = "https://files.pythonhosted.org/packages/fa/03/74c5b631ee1ded596945c12027649e6344614144369fd3ec1aaced782882/numpy-2.2.4-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:92bda934a791c01d6d9d8e038363c50918ef7c40601552a58ac84c9613a665bc", size = 15571717 }, + { url = "https://files.pythonhosted.org/packages/cb/dc/4fc7c0283abe0981e3b89f9b332a134e237dd476b0c018e1e21083310c31/numpy-2.2.4-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ee4d528022f4c5ff67332469e10efe06a267e32f4067dc76bb7e2cddf3cd25ff", size = 17879998 }, + { url = "https://files.pythonhosted.org/packages/e5/2b/878576190c5cfa29ed896b518cc516aecc7c98a919e20706c12480465f43/numpy-2.2.4-cp313-cp313t-win32.whl", hash = "sha256:05c076d531e9998e7e694c36e8b349969c56eadd2cdcd07242958489d79a7286", size = 6366896 }, + { url = "https://files.pythonhosted.org/packages/3e/05/eb7eec66b95cf697f08c754ef26c3549d03ebd682819f794cb039574a0a6/numpy-2.2.4-cp313-cp313t-win_amd64.whl", hash = "sha256:188dcbca89834cc2e14eb2f106c96d6d46f200fe0200310fc29089657379c58d", size = 12739119 }, +] + +[[package]] +name = "oauthlib" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/5f/3f4aae7b28db87ddef18afed3b71921e531ca288dc604eb981e9ec9f8853/oauthlib-2.1.0.tar.gz", hash = "sha256:ac35665a61c1685c56336bda97d5eefa246f1202618a1d6f34fccb1bdd404162", size = 128807 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/d1/ddd9cfea3e736399b97ded5c2dd62d1322adef4a72d816f1ed1049d6a179/oauthlib-2.1.0-py2.py3-none-any.whl", hash = "sha256:d883b36b21a6ad813953803edfa563b1b579d79ca758fe950d1bc9e8b326025b", size = 121792 }, +] + +[[package]] +name = "opensearch-dsl" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opensearch-py" }, + { name = "python-dateutil" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e6/f9/ebf7132d42c367522c5cface5c92ec78218ed5778651d05d620627dd9371/opensearch-dsl-2.1.0.tar.gz", hash = "sha256:e54ad0d754358233503e0c08e85b77dbe07d6c00babeae62c81d8cee11965ae6", size = 67097 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/28/1b06a9314f49892843f1559fb47c30d17771ba838ee01a3c0c638832101a/opensearch_dsl-2.1.0-py2.py3-none-any.whl", hash = "sha256:31559b738b48ed5abe87b357205a040fa1dc64042a6454ad2d6854050d911ba0", size = 63775 }, +] + +[[package]] +name = "opensearch-py" +version = "2.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "events" }, + { name = "python-dateutil" }, + { name = "requests" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/e4/192c97ca676c81f69e138a22e10fb03f64e14a55633cb2acffb41bf6d061/opensearch_py-2.8.0.tar.gz", hash = "sha256:6598df0bc7a003294edd0ba88a331e0793acbb8c910c43edf398791e3b2eccda", size = 237923 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/35/a957c6fb88ff6874996be688448b889475cf0ea978446cd5a30e764e0561/opensearch_py-2.8.0-py3-none-any.whl", hash = "sha256:52c60fdb5d4dcf6cce3ee746c13b194529b0161e0f41268b98ab8f1624abe2fa", size = 353492 }, +] + +[[package]] +name = "ordered-set" +version = "4.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/ca/bfac8bc689799bcca4157e0e0ced07e70ce125193fc2e166d2e685b7e2fe/ordered-set-4.1.0.tar.gz", hash = "sha256:694a8e44c87657c59292ede72891eb91d34131f6531463aab3009191c77364a8", size = 12826 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/55/af02708f230eb77084a299d7b08175cff006dea4f2721074b92cdb0296c0/ordered_set-4.1.0-py3-none-any.whl", hash = "sha256:046e1132c71fcf3330438a539928932caf51ddbc582496833e23de611de14562", size = 7634 }, +] + +[[package]] +name = "orderly-set" +version = "5.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/0e/ef328b512c2595831304e51f25e9287697b7bf13be0527ca9592a2659c16/orderly_set-5.3.0.tar.gz", hash = "sha256:80b3d8fdd3d39004d9aad389eaa0eab02c71f0a0511ba3a6d54a935a6c6a0acc", size = 20026 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/fe/8009ebb64a19cf4bdf51b16d3074375010735d8c30408efada6ce02bf37e/orderly_set-5.3.0-py3-none-any.whl", hash = "sha256:c2c0bfe604f5d3d9b24e8262a06feb612594f37aa3845650548befd7772945d1", size = 12179 }, +] + +[[package]] +name = "packaging" +version = "24.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, +] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663 }, +] + +[[package]] +name = "parso" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, +] + +[[package]] +name = "passlib" +version = "1.7.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/06/9da9ee59a67fae7761aab3ccc84fa4f3f33f125b370f1ccdb915bf967c11/passlib-1.7.4.tar.gz", hash = "sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04", size = 689844 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/a4/ab6b7589382ca3df236e03faa71deac88cae040af60c071a78d254a62172/passlib-1.7.4-py2.py3-none-any.whl", hash = "sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1", size = 525554 }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, +] + +[[package]] +name = "pillow" +version = "11.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/af/c097e544e7bd278333db77933e535098c259609c4eb3b85381109602fb5b/pillow-11.1.0.tar.gz", hash = "sha256:368da70808b36d73b4b390a8ffac11069f8a5c85f29eff1f1b01bcf3ef5b2a20", size = 46742715 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/20/9ce6ed62c91c073fcaa23d216e68289e19d95fb8188b9fb7a63d36771db8/pillow-11.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2062ffb1d36544d42fcaa277b069c88b01bb7298f4efa06731a7fd6cc290b81a", size = 3226818 }, + { url = "https://files.pythonhosted.org/packages/b9/d8/f6004d98579a2596c098d1e30d10b248798cceff82d2b77aa914875bfea1/pillow-11.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a85b653980faad27e88b141348707ceeef8a1186f75ecc600c395dcac19f385b", size = 3101662 }, + { url = "https://files.pythonhosted.org/packages/08/d9/892e705f90051c7a2574d9f24579c9e100c828700d78a63239676f960b74/pillow-11.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9409c080586d1f683df3f184f20e36fb647f2e0bc3988094d4fd8c9f4eb1b3b3", size = 4329317 }, + { url = "https://files.pythonhosted.org/packages/8c/aa/7f29711f26680eab0bcd3ecdd6d23ed6bce180d82e3f6380fb7ae35fcf3b/pillow-11.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fdadc077553621911f27ce206ffcbec7d3f8d7b50e0da39f10997e8e2bb7f6a", size = 4412999 }, + { url = "https://files.pythonhosted.org/packages/c8/c4/8f0fe3b9e0f7196f6d0bbb151f9fba323d72a41da068610c4c960b16632a/pillow-11.1.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:93a18841d09bcdd774dcdc308e4537e1f867b3dec059c131fde0327899734aa1", size = 4368819 }, + { url = "https://files.pythonhosted.org/packages/38/0d/84200ed6a871ce386ddc82904bfadc0c6b28b0c0ec78176871a4679e40b3/pillow-11.1.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9aa9aeddeed452b2f616ff5507459e7bab436916ccb10961c4a382cd3e03f47f", size = 4496081 }, + { url = "https://files.pythonhosted.org/packages/84/9c/9bcd66f714d7e25b64118e3952d52841a4babc6d97b6d28e2261c52045d4/pillow-11.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3cdcdb0b896e981678eee140d882b70092dac83ac1cdf6b3a60e2216a73f2b91", size = 4296513 }, + { url = "https://files.pythonhosted.org/packages/db/61/ada2a226e22da011b45f7104c95ebda1b63dcbb0c378ad0f7c2a710f8fd2/pillow-11.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:36ba10b9cb413e7c7dfa3e189aba252deee0602c86c309799da5a74009ac7a1c", size = 4431298 }, + { url = "https://files.pythonhosted.org/packages/e7/c4/fc6e86750523f367923522014b821c11ebc5ad402e659d8c9d09b3c9d70c/pillow-11.1.0-cp312-cp312-win32.whl", hash = "sha256:cfd5cd998c2e36a862d0e27b2df63237e67273f2fc78f47445b14e73a810e7e6", size = 2291630 }, + { url = "https://files.pythonhosted.org/packages/08/5c/2104299949b9d504baf3f4d35f73dbd14ef31bbd1ddc2c1b66a5b7dfda44/pillow-11.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:a697cd8ba0383bba3d2d3ada02b34ed268cb548b369943cd349007730c92bddf", size = 2626369 }, + { url = "https://files.pythonhosted.org/packages/37/f3/9b18362206b244167c958984b57c7f70a0289bfb59a530dd8af5f699b910/pillow-11.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:4dd43a78897793f60766563969442020e90eb7847463eca901e41ba186a7d4a5", size = 2375240 }, + { url = "https://files.pythonhosted.org/packages/b3/31/9ca79cafdce364fd5c980cd3416c20ce1bebd235b470d262f9d24d810184/pillow-11.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ae98e14432d458fc3de11a77ccb3ae65ddce70f730e7c76140653048c71bfcbc", size = 3226640 }, + { url = "https://files.pythonhosted.org/packages/ac/0f/ff07ad45a1f172a497aa393b13a9d81a32e1477ef0e869d030e3c1532521/pillow-11.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cc1331b6d5a6e144aeb5e626f4375f5b7ae9934ba620c0ac6b3e43d5e683a0f0", size = 3101437 }, + { url = "https://files.pythonhosted.org/packages/08/2f/9906fca87a68d29ec4530be1f893149e0cb64a86d1f9f70a7cfcdfe8ae44/pillow-11.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:758e9d4ef15d3560214cddbc97b8ef3ef86ce04d62ddac17ad39ba87e89bd3b1", size = 4326605 }, + { url = "https://files.pythonhosted.org/packages/b0/0f/f3547ee15b145bc5c8b336401b2d4c9d9da67da9dcb572d7c0d4103d2c69/pillow-11.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b523466b1a31d0dcef7c5be1f20b942919b62fd6e9a9be199d035509cbefc0ec", size = 4411173 }, + { url = "https://files.pythonhosted.org/packages/b1/df/bf8176aa5db515c5de584c5e00df9bab0713548fd780c82a86cba2c2fedb/pillow-11.1.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:9044b5e4f7083f209c4e35aa5dd54b1dd5b112b108648f5c902ad586d4f945c5", size = 4369145 }, + { url = "https://files.pythonhosted.org/packages/de/7c/7433122d1cfadc740f577cb55526fdc39129a648ac65ce64db2eb7209277/pillow-11.1.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:3764d53e09cdedd91bee65c2527815d315c6b90d7b8b79759cc48d7bf5d4f114", size = 4496340 }, + { url = "https://files.pythonhosted.org/packages/25/46/dd94b93ca6bd555588835f2504bd90c00d5438fe131cf01cfa0c5131a19d/pillow-11.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:31eba6bbdd27dde97b0174ddf0297d7a9c3a507a8a1480e1e60ef914fe23d352", size = 4296906 }, + { url = "https://files.pythonhosted.org/packages/a8/28/2f9d32014dfc7753e586db9add35b8a41b7a3b46540e965cb6d6bc607bd2/pillow-11.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b5d658fbd9f0d6eea113aea286b21d3cd4d3fd978157cbf2447a6035916506d3", size = 4431759 }, + { url = "https://files.pythonhosted.org/packages/33/48/19c2cbe7403870fbe8b7737d19eb013f46299cdfe4501573367f6396c775/pillow-11.1.0-cp313-cp313-win32.whl", hash = "sha256:f86d3a7a9af5d826744fabf4afd15b9dfef44fe69a98541f666f66fbb8d3fef9", size = 2291657 }, + { url = "https://files.pythonhosted.org/packages/3b/ad/285c556747d34c399f332ba7c1a595ba245796ef3e22eae190f5364bb62b/pillow-11.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:593c5fd6be85da83656b93ffcccc2312d2d149d251e98588b14fbc288fd8909c", size = 2626304 }, + { url = "https://files.pythonhosted.org/packages/e5/7b/ef35a71163bf36db06e9c8729608f78dedf032fc8313d19bd4be5c2588f3/pillow-11.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:11633d58b6ee5733bde153a8dafd25e505ea3d32e261accd388827ee987baf65", size = 2375117 }, + { url = "https://files.pythonhosted.org/packages/79/30/77f54228401e84d6791354888549b45824ab0ffde659bafa67956303a09f/pillow-11.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:70ca5ef3b3b1c4a0812b5c63c57c23b63e53bc38e758b37a951e5bc466449861", size = 3230060 }, + { url = "https://files.pythonhosted.org/packages/ce/b1/56723b74b07dd64c1010fee011951ea9c35a43d8020acd03111f14298225/pillow-11.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8000376f139d4d38d6851eb149b321a52bb8893a88dae8ee7d95840431977081", size = 3106192 }, + { url = "https://files.pythonhosted.org/packages/e1/cd/7bf7180e08f80a4dcc6b4c3a0aa9e0b0ae57168562726a05dc8aa8fa66b0/pillow-11.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ee85f0696a17dd28fbcfceb59f9510aa71934b483d1f5601d1030c3c8304f3c", size = 4446805 }, + { url = "https://files.pythonhosted.org/packages/97/42/87c856ea30c8ed97e8efbe672b58c8304dee0573f8c7cab62ae9e31db6ae/pillow-11.1.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:dd0e081319328928531df7a0e63621caf67652c8464303fd102141b785ef9547", size = 4530623 }, + { url = "https://files.pythonhosted.org/packages/ff/41/026879e90c84a88e33fb00cc6bd915ac2743c67e87a18f80270dfe3c2041/pillow-11.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e63e4e5081de46517099dc30abe418122f54531a6ae2ebc8680bcd7096860eab", size = 4465191 }, + { url = "https://files.pythonhosted.org/packages/e5/fb/a7960e838bc5df57a2ce23183bfd2290d97c33028b96bde332a9057834d3/pillow-11.1.0-cp313-cp313t-win32.whl", hash = "sha256:dda60aa465b861324e65a78c9f5cf0f4bc713e4309f83bc387be158b077963d9", size = 2295494 }, + { url = "https://files.pythonhosted.org/packages/d7/6c/6ec83ee2f6f0fda8d4cf89045c6be4b0373ebfc363ba8538f8c999f63fcd/pillow-11.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ad5db5781c774ab9a9b2c4302bbf0c1014960a0a7be63278d13ae6fdf88126fe", size = 2631595 }, + { url = "https://files.pythonhosted.org/packages/cf/6c/41c21c6c8af92b9fea313aa47c75de49e2f9a467964ee33eb0135d47eb64/pillow-11.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:67cd427c68926108778a9005f2a04adbd5e67c442ed21d95389fe1d595458756", size = 2377651 }, +] + +[[package]] +name = "pip" +version = "25.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/53/b309b4a497b09655cb7e07088966881a57d082f48ac3cb54ea729fd2c6cf/pip-25.0.1.tar.gz", hash = "sha256:88f96547ea48b940a3a385494e181e29fb8637898f88d88737c5049780f196ea", size = 1950850 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/bc/b7db44f5f39f9d0494071bddae6880eb645970366d0a200022a1a93d57f5/pip-25.0.1-py3-none-any.whl", hash = "sha256:c46efd13b6aa8279f33f2864459c8ce587ea6a1a59ee20de055868d8f7688f7f", size = 1841526 }, +] + +[[package]] +name = "pipenv" +version = "2024.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "packaging" }, + { name = "setuptools" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ca/5b/8ce5227713d692913c186d9a3164eee0236fbc3eaca87d7e2bd5dbb1da36/pipenv-2024.4.1.tar.gz", hash = "sha256:e8ea6105c1cdda7d5c19df7bd6439a006751f3d4e017602c791e7b51314adf84", size = 4607041 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/0e/e5297a36fc2fa01f59b4995fffcb740a744db12864ea94392b0079dd26c2/pipenv-2024.4.1-py3-none-any.whl", hash = "sha256:ab26ee98a7d83d342c1f562ee0564094ab1de091e5d5cec4eeaa95fb600de998", size = 3038967 }, +] + +[[package]] +name = "pipfile" +version = "0.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "toml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/01/4486ea9606ef8467c39b0cf6ea414eb4de5467dcb4a97333cf11a371cfd2/pipfile-0.0.2.tar.gz", hash = "sha256:f7d9f15de8b660986557eb3cc5391aa1a16207ac41bc378d03f414762d36c984", size = 18065 } + +[[package]] +name = "platformdirs" +version = "4.3.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499 }, +] + +[[package]] +name = "pluggy" +version = "0.13.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/04/7a8542bed4b16a65c2714bf76cf5a0b026157da7f75e87cc88774aa10b14/pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0", size = 57962 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/28/85c7aa31b80d150b772fbe4a229487bc6644da9ccb7e427dd8cc60cb8a62/pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d", size = 18077 }, +] + +[[package]] +name = "ply" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567 }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.50" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/e1/bd15cb8ffdcfeeb2bdc215de3c3cffca11408d829e4b8416dcfe71ba8854/prompt_toolkit-3.0.50.tar.gz", hash = "sha256:544748f3860a2623ca5cd6d2795e7a14f3d0e1c3c9728359013f79877fc89bab", size = 429087 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/ea/d836f008d33151c7a1f62caf3d8dd782e4d15f6a43897f64480c2b8de2ad/prompt_toolkit-3.0.50-py3-none-any.whl", hash = "sha256:9b6427eb19e479d98acff65196a307c555eb567989e6d88ebbb1b509d9779198", size = 387816 }, +] + +[[package]] +name = "propcache" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/92/76/f941e63d55c0293ff7829dd21e7cf1147e90a526756869a9070f287a68c9/propcache-0.3.0.tar.gz", hash = "sha256:a8fd93de4e1d278046345f49e2238cdb298589325849b2645d4a94c53faeffc5", size = 42722 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/2c/921f15dc365796ec23975b322b0078eae72995c7b4d49eba554c6a308d70/propcache-0.3.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e53d19c2bf7d0d1e6998a7e693c7e87300dd971808e6618964621ccd0e01fe4e", size = 79867 }, + { url = "https://files.pythonhosted.org/packages/11/a5/4a6cc1a559d1f2fb57ea22edc4245158cdffae92f7f92afcee2913f84417/propcache-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a61a68d630e812b67b5bf097ab84e2cd79b48c792857dc10ba8a223f5b06a2af", size = 46109 }, + { url = "https://files.pythonhosted.org/packages/e1/6d/28bfd3af3a567ad7d667348e7f46a520bda958229c4d545ba138a044232f/propcache-0.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fb91d20fa2d3b13deea98a690534697742029f4fb83673a3501ae6e3746508b5", size = 45635 }, + { url = "https://files.pythonhosted.org/packages/73/20/d75b42eaffe5075eac2f4e168f6393d21c664c91225288811d85451b2578/propcache-0.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67054e47c01b7b349b94ed0840ccae075449503cf1fdd0a1fdd98ab5ddc2667b", size = 242159 }, + { url = "https://files.pythonhosted.org/packages/a5/fb/4b537dd92f9fd4be68042ec51c9d23885ca5fafe51ec24c58d9401034e5f/propcache-0.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:997e7b8f173a391987df40f3b52c423e5850be6f6df0dcfb5376365440b56667", size = 248163 }, + { url = "https://files.pythonhosted.org/packages/e7/af/8a9db04ac596d531ca0ef7dde518feaadfcdabef7b17d6a5ec59ee3effc2/propcache-0.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d663fd71491dde7dfdfc899d13a067a94198e90695b4321084c6e450743b8c7", size = 248794 }, + { url = "https://files.pythonhosted.org/packages/9d/c4/ecfc988879c0fd9db03228725b662d76cf484b6b46f7e92fee94e4b52490/propcache-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8884ba1a0fe7210b775106b25850f5e5a9dc3c840d1ae9924ee6ea2eb3acbfe7", size = 243912 }, + { url = "https://files.pythonhosted.org/packages/04/a2/298dd27184faa8b7d91cc43488b578db218b3cc85b54d912ed27b8c5597a/propcache-0.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa806bbc13eac1ab6291ed21ecd2dd426063ca5417dd507e6be58de20e58dfcf", size = 229402 }, + { url = "https://files.pythonhosted.org/packages/be/0d/efe7fec316ca92dbf4bc4a9ba49ca889c43ca6d48ab1d6fa99fc94e5bb98/propcache-0.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6f4d7a7c0aff92e8354cceca6fe223973ddf08401047920df0fcb24be2bd5138", size = 226896 }, + { url = "https://files.pythonhosted.org/packages/60/63/72404380ae1d9c96d96e165aa02c66c2aae6072d067fc4713da5cde96762/propcache-0.3.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:9be90eebc9842a93ef8335291f57b3b7488ac24f70df96a6034a13cb58e6ff86", size = 221447 }, + { url = "https://files.pythonhosted.org/packages/9d/18/b8392cab6e0964b67a30a8f4dadeaff64dc7022b5a34bb1d004ea99646f4/propcache-0.3.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:bf15fc0b45914d9d1b706f7c9c4f66f2b7b053e9517e40123e137e8ca8958b3d", size = 222440 }, + { url = "https://files.pythonhosted.org/packages/6f/be/105d9ceda0f97eff8c06bac1673448b2db2a497444de3646464d3f5dc881/propcache-0.3.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5a16167118677d94bb48bfcd91e420088854eb0737b76ec374b91498fb77a70e", size = 234104 }, + { url = "https://files.pythonhosted.org/packages/cb/c9/f09a4ec394cfcce4053d8b2a04d622b5f22d21ba9bb70edd0cad061fa77b/propcache-0.3.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:41de3da5458edd5678b0f6ff66691507f9885f5fe6a0fb99a5d10d10c0fd2d64", size = 239086 }, + { url = "https://files.pythonhosted.org/packages/ea/aa/96f7f9ed6def82db67c972bdb7bd9f28b95d7d98f7e2abaf144c284bf609/propcache-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:728af36011bb5d344c4fe4af79cfe186729efb649d2f8b395d1572fb088a996c", size = 230991 }, + { url = "https://files.pythonhosted.org/packages/5a/11/bee5439de1307d06fad176f7143fec906e499c33d7aff863ea8428b8e98b/propcache-0.3.0-cp312-cp312-win32.whl", hash = "sha256:6b5b7fd6ee7b54e01759f2044f936dcf7dea6e7585f35490f7ca0420fe723c0d", size = 40337 }, + { url = "https://files.pythonhosted.org/packages/e4/17/e5789a54a0455a61cb9efc4ca6071829d992220c2998a27c59aeba749f6f/propcache-0.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:2d15bc27163cd4df433e75f546b9ac31c1ba7b0b128bfb1b90df19082466ff57", size = 44404 }, + { url = "https://files.pythonhosted.org/packages/3a/0f/a79dd23a0efd6ee01ab0dc9750d8479b343bfd0c73560d59d271eb6a99d4/propcache-0.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a2b9bf8c79b660d0ca1ad95e587818c30ccdb11f787657458d6f26a1ea18c568", size = 77287 }, + { url = "https://files.pythonhosted.org/packages/b8/51/76675703c90de38ac75adb8deceb3f3ad99b67ff02a0fa5d067757971ab8/propcache-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b0c1a133d42c6fc1f5fbcf5c91331657a1ff822e87989bf4a6e2e39b818d0ee9", size = 44923 }, + { url = "https://files.pythonhosted.org/packages/01/9b/fd5ddbee66cf7686e73c516227c2fd9bf471dbfed0f48329d095ea1228d3/propcache-0.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bb2f144c6d98bb5cbc94adeb0447cfd4c0f991341baa68eee3f3b0c9c0e83767", size = 44325 }, + { url = "https://files.pythonhosted.org/packages/13/1c/6961f11eb215a683b34b903b82bde486c606516c1466bf1fa67f26906d51/propcache-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1323cd04d6e92150bcc79d0174ce347ed4b349d748b9358fd2e497b121e03c8", size = 225116 }, + { url = "https://files.pythonhosted.org/packages/ef/ea/f8410c40abcb2e40dffe9adeed017898c930974650a63e5c79b886aa9f73/propcache-0.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b812b3cb6caacd072276ac0492d249f210006c57726b6484a1e1805b3cfeea0", size = 229905 }, + { url = "https://files.pythonhosted.org/packages/ef/5a/a9bf90894001468bf8e6ea293bb00626cc9ef10f8eb7996e9ec29345c7ed/propcache-0.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:742840d1d0438eb7ea4280f3347598f507a199a35a08294afdcc560c3739989d", size = 233221 }, + { url = "https://files.pythonhosted.org/packages/dd/ce/fffdddd9725b690b01d345c1156b4c2cc6dca09ab5c23a6d07b8f37d6e2f/propcache-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c6e7e4f9167fddc438cd653d826f2222222564daed4116a02a184b464d3ef05", size = 227627 }, + { url = "https://files.pythonhosted.org/packages/58/ae/45c89a5994a334735a3032b48e8e4a98c05d9536ddee0719913dc27da548/propcache-0.3.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a94ffc66738da99232ddffcf7910e0f69e2bbe3a0802e54426dbf0714e1c2ffe", size = 214217 }, + { url = "https://files.pythonhosted.org/packages/01/84/bc60188c3290ff8f5f4a92b9ca2d93a62e449c8daf6fd11ad517ad136926/propcache-0.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3c6ec957025bf32b15cbc6b67afe233c65b30005e4c55fe5768e4bb518d712f1", size = 212921 }, + { url = "https://files.pythonhosted.org/packages/14/b3/39d60224048feef7a96edabb8217dc3f75415457e5ebbef6814f8b2a27b5/propcache-0.3.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:549722908de62aa0b47a78b90531c022fa6e139f9166be634f667ff45632cc92", size = 208200 }, + { url = "https://files.pythonhosted.org/packages/9d/b3/0a6720b86791251273fff8a01bc8e628bc70903513bd456f86cde1e1ef84/propcache-0.3.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5d62c4f6706bff5d8a52fd51fec6069bef69e7202ed481486c0bc3874912c787", size = 208400 }, + { url = "https://files.pythonhosted.org/packages/e9/4f/bb470f3e687790547e2e78105fb411f54e0cdde0d74106ccadd2521c6572/propcache-0.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:24c04f8fbf60094c531667b8207acbae54146661657a1b1be6d3ca7773b7a545", size = 218116 }, + { url = "https://files.pythonhosted.org/packages/34/71/277f7f9add469698ac9724c199bfe06f85b199542121a71f65a80423d62a/propcache-0.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:7c5f5290799a3f6539cc5e6f474c3e5c5fbeba74a5e1e5be75587746a940d51e", size = 222911 }, + { url = "https://files.pythonhosted.org/packages/92/e3/a7b9782aef5a2fc765b1d97da9ec7aed2f25a4e985703608e73232205e3f/propcache-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4fa0e7c9c3cf7c276d4f6ab9af8adddc127d04e0fcabede315904d2ff76db626", size = 216563 }, + { url = "https://files.pythonhosted.org/packages/ab/76/0583ca2c551aa08ffcff87b2c6849c8f01c1f6fb815a5226f0c5c202173e/propcache-0.3.0-cp313-cp313-win32.whl", hash = "sha256:ee0bd3a7b2e184e88d25c9baa6a9dc609ba25b76daae942edfb14499ac7ec374", size = 39763 }, + { url = "https://files.pythonhosted.org/packages/80/ec/c6a84f9a36f608379b95f0e786c111d5465926f8c62f12be8cdadb02b15c/propcache-0.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:1c8f7d896a16da9455f882870a507567d4f58c53504dc2d4b1e1d386dfe4588a", size = 43650 }, + { url = "https://files.pythonhosted.org/packages/ee/95/7d32e3560f5bf83fc2f2a4c1b0c181d327d53d5f85ebd045ab89d4d97763/propcache-0.3.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:e560fd75aaf3e5693b91bcaddd8b314f4d57e99aef8a6c6dc692f935cc1e6bbf", size = 82140 }, + { url = "https://files.pythonhosted.org/packages/86/89/752388f12e6027a5e63f5d075f15291ded48e2d8311314fff039da5a9b11/propcache-0.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:65a37714b8ad9aba5780325228598a5b16c47ba0f8aeb3dc0514701e4413d7c0", size = 47296 }, + { url = "https://files.pythonhosted.org/packages/1b/4c/b55c98d586c69180d3048984a57a5ea238bdeeccf82dbfcd598e935e10bb/propcache-0.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:07700939b2cbd67bfb3b76a12e1412405d71019df00ca5697ce75e5ef789d829", size = 46724 }, + { url = "https://files.pythonhosted.org/packages/0f/b6/67451a437aed90c4e951e320b5b3d7eb584ade1d5592f6e5e8f678030989/propcache-0.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c0fdbdf6983526e269e5a8d53b7ae3622dd6998468821d660d0daf72779aefa", size = 291499 }, + { url = "https://files.pythonhosted.org/packages/ee/ff/e4179facd21515b24737e1e26e02615dfb5ed29416eed4cf5bc6ac5ce5fb/propcache-0.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:794c3dd744fad478b6232289c866c25406ecdfc47e294618bdf1697e69bd64a6", size = 293911 }, + { url = "https://files.pythonhosted.org/packages/76/8d/94a8585992a064a23bd54f56c5e58c3b8bf0c0a06ae10e56f2353ae16c3d/propcache-0.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4544699674faf66fb6b4473a1518ae4999c1b614f0b8297b1cef96bac25381db", size = 293301 }, + { url = "https://files.pythonhosted.org/packages/b0/b8/2c860c92b4134f68c7716c6f30a0d723973f881c32a6d7a24c4ddca05fdf/propcache-0.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fddb8870bdb83456a489ab67c6b3040a8d5a55069aa6f72f9d872235fbc52f54", size = 281947 }, + { url = "https://files.pythonhosted.org/packages/cd/72/b564be7411b525d11757b713c757c21cd4dc13b6569c3b2b8f6d3c96fd5e/propcache-0.3.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f857034dc68d5ceb30fb60afb6ff2103087aea10a01b613985610e007053a121", size = 268072 }, + { url = "https://files.pythonhosted.org/packages/37/68/d94649e399e8d7fc051e5a4f2334efc567993525af083db145a70690a121/propcache-0.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:02df07041e0820cacc8f739510078f2aadcfd3fc57eaeeb16d5ded85c872c89e", size = 275190 }, + { url = "https://files.pythonhosted.org/packages/d8/3c/446e125f5bbbc1922964dd67cb541c01cdb678d811297b79a4ff6accc843/propcache-0.3.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:f47d52fd9b2ac418c4890aad2f6d21a6b96183c98021f0a48497a904199f006e", size = 254145 }, + { url = "https://files.pythonhosted.org/packages/f4/80/fd3f741483dc8e59f7ba7e05eaa0f4e11677d7db2077522b92ff80117a2a/propcache-0.3.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9ff4e9ecb6e4b363430edf2c6e50173a63e0820e549918adef70515f87ced19a", size = 257163 }, + { url = "https://files.pythonhosted.org/packages/dc/cf/6292b5ce6ed0017e6a89024a827292122cc41b6259b30ada0c6732288513/propcache-0.3.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:ecc2920630283e0783c22e2ac94427f8cca29a04cfdf331467d4f661f4072dac", size = 280249 }, + { url = "https://files.pythonhosted.org/packages/e8/f0/fd9b8247b449fe02a4f96538b979997e229af516d7462b006392badc59a1/propcache-0.3.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:c441c841e82c5ba7a85ad25986014be8d7849c3cfbdb6004541873505929a74e", size = 288741 }, + { url = "https://files.pythonhosted.org/packages/64/71/cf831fdc2617f86cfd7f414cfc487d018e722dac8acc098366ce9bba0941/propcache-0.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c929916cbdb540d3407c66f19f73387f43e7c12fa318a66f64ac99da601bcdf", size = 277061 }, + { url = "https://files.pythonhosted.org/packages/42/78/9432542a35d944abeca9e02927a0de38cd7a298466d8ffa171536e2381c3/propcache-0.3.0-cp313-cp313t-win32.whl", hash = "sha256:0c3e893c4464ebd751b44ae76c12c5f5c1e4f6cbd6fbf67e3783cd93ad221863", size = 42252 }, + { url = "https://files.pythonhosted.org/packages/6f/45/960365f4f8978f48ebb56b1127adf33a49f2e69ecd46ac1f46d6cf78a79d/propcache-0.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:75e872573220d1ee2305b35c9813626e620768248425f58798413e9c39741f46", size = 46425 }, + { url = "https://files.pythonhosted.org/packages/b5/35/6c4c6fc8774a9e3629cd750dc24a7a4fb090a25ccd5c3246d127b70f9e22/propcache-0.3.0-py3-none-any.whl", hash = "sha256:67dda3c7325691c2081510e92c561f465ba61b975f481735aefdfc845d2cd043", size = 12101 }, +] + +[[package]] +name = "psycopg2-binary" +version = "2.9.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/0e/bdc8274dc0585090b4e3432267d7be4dfbfd8971c0fa59167c711105a6bf/psycopg2-binary-2.9.10.tar.gz", hash = "sha256:4b3df0e6990aa98acda57d983942eff13d824135fe2250e6522edaa782a06de2", size = 385764 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/7d/465cc9795cf76f6d329efdafca74693714556ea3891813701ac1fee87545/psycopg2_binary-2.9.10-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:880845dfe1f85d9d5f7c412efea7a08946a46894537e4e5d091732eb1d34d9a0", size = 3044771 }, + { url = "https://files.pythonhosted.org/packages/8b/31/6d225b7b641a1a2148e3ed65e1aa74fc86ba3fee850545e27be9e1de893d/psycopg2_binary-2.9.10-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:9440fa522a79356aaa482aa4ba500b65f28e5d0e63b801abf6aa152a29bd842a", size = 3275336 }, + { url = "https://files.pythonhosted.org/packages/30/b7/a68c2b4bff1cbb1728e3ec864b2d92327c77ad52edcd27922535a8366f68/psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e3923c1d9870c49a2d44f795df0c889a22380d36ef92440ff618ec315757e539", size = 2851637 }, + { url = "https://files.pythonhosted.org/packages/0b/b1/cfedc0e0e6f9ad61f8657fd173b2f831ce261c02a08c0b09c652b127d813/psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b2c956c028ea5de47ff3a8d6b3cc3330ab45cf0b7c3da35a2d6ff8420896526", size = 3082097 }, + { url = "https://files.pythonhosted.org/packages/18/ed/0a8e4153c9b769f59c02fb5e7914f20f0b2483a19dae7bf2db54b743d0d0/psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f758ed67cab30b9a8d2833609513ce4d3bd027641673d4ebc9c067e4d208eec1", size = 3264776 }, + { url = "https://files.pythonhosted.org/packages/10/db/d09da68c6a0cdab41566b74e0a6068a425f077169bed0946559b7348ebe9/psycopg2_binary-2.9.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cd9b4f2cfab88ed4a9106192de509464b75a906462fb846b936eabe45c2063e", size = 3020968 }, + { url = "https://files.pythonhosted.org/packages/94/28/4d6f8c255f0dfffb410db2b3f9ac5218d959a66c715c34cac31081e19b95/psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dc08420625b5a20b53551c50deae6e231e6371194fa0651dbe0fb206452ae1f", size = 2872334 }, + { url = "https://files.pythonhosted.org/packages/05/f7/20d7bf796593c4fea95e12119d6cc384ff1f6141a24fbb7df5a668d29d29/psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d7cd730dfa7c36dbe8724426bf5612798734bff2d3c3857f36f2733f5bfc7c00", size = 2822722 }, + { url = "https://files.pythonhosted.org/packages/4d/e4/0c407ae919ef626dbdb32835a03b6737013c3cc7240169843965cada2bdf/psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:155e69561d54d02b3c3209545fb08938e27889ff5a10c19de8d23eb5a41be8a5", size = 2920132 }, + { url = "https://files.pythonhosted.org/packages/2d/70/aa69c9f69cf09a01da224909ff6ce8b68faeef476f00f7ec377e8f03be70/psycopg2_binary-2.9.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c3cc28a6fd5a4a26224007712e79b81dbaee2ffb90ff406256158ec4d7b52b47", size = 2959312 }, + { url = "https://files.pythonhosted.org/packages/d3/bd/213e59854fafe87ba47814bf413ace0dcee33a89c8c8c814faca6bc7cf3c/psycopg2_binary-2.9.10-cp312-cp312-win32.whl", hash = "sha256:ec8a77f521a17506a24a5f626cb2aee7850f9b69a0afe704586f63a464f3cd64", size = 1025191 }, + { url = "https://files.pythonhosted.org/packages/92/29/06261ea000e2dc1e22907dbbc483a1093665509ea586b29b8986a0e56733/psycopg2_binary-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:18c5ee682b9c6dd3696dad6e54cc7ff3a1a9020df6a5c0f861ef8bfd338c3ca0", size = 1164031 }, + { url = "https://files.pythonhosted.org/packages/3e/30/d41d3ba765609c0763505d565c4d12d8f3c79793f0d0f044ff5a28bf395b/psycopg2_binary-2.9.10-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:26540d4a9a4e2b096f1ff9cce51253d0504dca5a85872c7f7be23be5a53eb18d", size = 3044699 }, + { url = "https://files.pythonhosted.org/packages/35/44/257ddadec7ef04536ba71af6bc6a75ec05c5343004a7ec93006bee66c0bc/psycopg2_binary-2.9.10-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e217ce4d37667df0bc1c397fdcd8de5e81018ef305aed9415c3b093faaeb10fb", size = 3275245 }, + { url = "https://files.pythonhosted.org/packages/1b/11/48ea1cd11de67f9efd7262085588790a95d9dfcd9b8a687d46caf7305c1a/psycopg2_binary-2.9.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:245159e7ab20a71d989da00f280ca57da7641fa2cdcf71749c193cea540a74f7", size = 2851631 }, + { url = "https://files.pythonhosted.org/packages/62/e0/62ce5ee650e6c86719d621a761fe4bc846ab9eff8c1f12b1ed5741bf1c9b/psycopg2_binary-2.9.10-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c4ded1a24b20021ebe677b7b08ad10bf09aac197d6943bfe6fec70ac4e4690d", size = 3082140 }, + { url = "https://files.pythonhosted.org/packages/27/ce/63f946c098611f7be234c0dd7cb1ad68b0b5744d34f68062bb3c5aa510c8/psycopg2_binary-2.9.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3abb691ff9e57d4a93355f60d4f4c1dd2d68326c968e7db17ea96df3c023ef73", size = 3264762 }, + { url = "https://files.pythonhosted.org/packages/43/25/c603cd81402e69edf7daa59b1602bd41eb9859e2824b8c0855d748366ac9/psycopg2_binary-2.9.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8608c078134f0b3cbd9f89b34bd60a943b23fd33cc5f065e8d5f840061bd0673", size = 3020967 }, + { url = "https://files.pythonhosted.org/packages/5f/d6/8708d8c6fca531057fa170cdde8df870e8b6a9b136e82b361c65e42b841e/psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:230eeae2d71594103cd5b93fd29d1ace6420d0b86f4778739cb1a5a32f607d1f", size = 2872326 }, + { url = "https://files.pythonhosted.org/packages/ce/ac/5b1ea50fc08a9df82de7e1771537557f07c2632231bbab652c7e22597908/psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:bb89f0a835bcfc1d42ccd5f41f04870c1b936d8507c6df12b7737febc40f0909", size = 2822712 }, + { url = "https://files.pythonhosted.org/packages/c4/fc/504d4503b2abc4570fac3ca56eb8fed5e437bf9c9ef13f36b6621db8ef00/psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f0c2d907a1e102526dd2986df638343388b94c33860ff3bbe1384130828714b1", size = 2920155 }, + { url = "https://files.pythonhosted.org/packages/b2/d1/323581e9273ad2c0dbd1902f3fb50c441da86e894b6e25a73c3fda32c57e/psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f8157bed2f51db683f31306aa497311b560f2265998122abe1dce6428bd86567", size = 2959356 }, + { url = "https://files.pythonhosted.org/packages/08/50/d13ea0a054189ae1bc21af1d85b6f8bb9bbc5572991055d70ad9006fe2d6/psycopg2_binary-2.9.10-cp313-cp313-win_amd64.whl", hash = "sha256:27422aa5f11fbcd9b18da48373eb67081243662f9b46e6fd07c3eb46e4535142", size = 2569224 }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, +] + +[[package]] +name = "py" +version = "1.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/ff/fec109ceb715d2a6b4c4a85a61af3b40c723a961e8828319fbcb15b868dc/py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", size = 207796 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378", size = 98708 }, +] + +[[package]] +name = "pycodestyle" +version = "2.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/aa/210b2c9aedd8c1cbeea31a50e42050ad56187754b34eb214c46709445801/pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521", size = 39232 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/d8/a211b3f85e99a0daa2ddec96c949cac6824bd305b040571b82a03dd62636/pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3", size = 31284 }, +] + +[[package]] +name = "pycountry" +version = "22.3.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/24/033604d30f6cf82d661c0f9dfc2c71d52cafc2de516616f80d3b0600cb7c/pycountry-22.3.5.tar.gz", hash = "sha256:b2163a246c585894d808f18783e19137cb70a0c18fb36748dc01fc6f109c1646", size = 10141551 } + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, +] + +[[package]] +name = "pydantic" +version = "2.10.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696 }, +] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/74/51c8a5482ca447871c93e142d9d4a92ead74de6c8dc5e66733e22c9bba89/pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0", size = 1893127 }, + { url = "https://files.pythonhosted.org/packages/d3/f3/c97e80721735868313c58b89d2de85fa80fe8dfeeed84dc51598b92a135e/pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef", size = 1811340 }, + { url = "https://files.pythonhosted.org/packages/9e/91/840ec1375e686dbae1bd80a9e46c26a1e0083e1186abc610efa3d9a36180/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7", size = 1822900 }, + { url = "https://files.pythonhosted.org/packages/f6/31/4240bc96025035500c18adc149aa6ffdf1a0062a4b525c932065ceb4d868/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934", size = 1869177 }, + { url = "https://files.pythonhosted.org/packages/fa/20/02fbaadb7808be578317015c462655c317a77a7c8f0ef274bc016a784c54/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6", size = 2038046 }, + { url = "https://files.pythonhosted.org/packages/06/86/7f306b904e6c9eccf0668248b3f272090e49c275bc488a7b88b0823444a4/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c", size = 2685386 }, + { url = "https://files.pythonhosted.org/packages/8d/f0/49129b27c43396581a635d8710dae54a791b17dfc50c70164866bbf865e3/pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2", size = 1997060 }, + { url = "https://files.pythonhosted.org/packages/0d/0f/943b4af7cd416c477fd40b187036c4f89b416a33d3cc0ab7b82708a667aa/pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4", size = 2004870 }, + { url = "https://files.pythonhosted.org/packages/35/40/aea70b5b1a63911c53a4c8117c0a828d6790483f858041f47bab0b779f44/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3", size = 1999822 }, + { url = "https://files.pythonhosted.org/packages/f2/b3/807b94fd337d58effc5498fd1a7a4d9d59af4133e83e32ae39a96fddec9d/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4", size = 2130364 }, + { url = "https://files.pythonhosted.org/packages/fc/df/791c827cd4ee6efd59248dca9369fb35e80a9484462c33c6649a8d02b565/pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57", size = 2158303 }, + { url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064 }, + { url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046 }, + { url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092 }, + { url = "https://files.pythonhosted.org/packages/41/b1/9bc383f48f8002f99104e3acff6cba1231b29ef76cfa45d1506a5cad1f84/pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b", size = 1892709 }, + { url = "https://files.pythonhosted.org/packages/10/6c/e62b8657b834f3eb2961b49ec8e301eb99946245e70bf42c8817350cbefc/pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154", size = 1811273 }, + { url = "https://files.pythonhosted.org/packages/ba/15/52cfe49c8c986e081b863b102d6b859d9defc63446b642ccbbb3742bf371/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9", size = 1823027 }, + { url = "https://files.pythonhosted.org/packages/b1/1c/b6f402cfc18ec0024120602bdbcebc7bdd5b856528c013bd4d13865ca473/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9", size = 1868888 }, + { url = "https://files.pythonhosted.org/packages/bd/7b/8cb75b66ac37bc2975a3b7de99f3c6f355fcc4d89820b61dffa8f1e81677/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1", size = 2037738 }, + { url = "https://files.pythonhosted.org/packages/c8/f1/786d8fe78970a06f61df22cba58e365ce304bf9b9f46cc71c8c424e0c334/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a", size = 2685138 }, + { url = "https://files.pythonhosted.org/packages/a6/74/d12b2cd841d8724dc8ffb13fc5cef86566a53ed358103150209ecd5d1999/pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e", size = 1997025 }, + { url = "https://files.pythonhosted.org/packages/a0/6e/940bcd631bc4d9a06c9539b51f070b66e8f370ed0933f392db6ff350d873/pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4", size = 2004633 }, + { url = "https://files.pythonhosted.org/packages/50/cc/a46b34f1708d82498c227d5d80ce615b2dd502ddcfd8376fc14a36655af1/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27", size = 1999404 }, + { url = "https://files.pythonhosted.org/packages/ca/2d/c365cfa930ed23bc58c41463bae347d1005537dc8db79e998af8ba28d35e/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee", size = 2130130 }, + { url = "https://files.pythonhosted.org/packages/f4/d7/eb64d015c350b7cdb371145b54d96c919d4db516817f31cd1c650cae3b21/pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1", size = 2157946 }, + { url = "https://files.pythonhosted.org/packages/a4/99/bddde3ddde76c03b65dfd5a66ab436c4e58ffc42927d4ff1198ffbf96f5f/pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130", size = 1834387 }, + { url = "https://files.pythonhosted.org/packages/71/47/82b5e846e01b26ac6f1893d3c5f9f3a2eb6ba79be26eef0b759b4fe72946/pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee", size = 1990453 }, + { url = "https://files.pythonhosted.org/packages/51/b2/b2b50d5ecf21acf870190ae5d093602d95f66c9c31f9d5de6062eb329ad1/pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b", size = 1885186 }, +] + +[[package]] +name = "pydash" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/d6/a0bf5a313f8888df7d45b9bc953335b0149a07b90890be84f4ca24960318/pydash-6.0.2.tar.gz", hash = "sha256:35caa588e01d293713655e0870544d25128cd414c5e19477a0d63adc2b2ca03e", size = 146289 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/42/a5996e99396ee8a7e23b68721b79404fdd00f7e6fe51cd0ef76c1a98df4a/pydash-6.0.2-py3-none-any.whl", hash = "sha256:6d3ce5cbbc8ca3533c12782ac201c2ec756d1e1703ec3efc88f2b95d1ed2bb31", size = 85390 }, +] + +[[package]] +name = "pydocstyle" +version = "6.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "snowballstemmer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/d5385ca59fd065e3c6a5fe19f9bc9d5ea7f2509fa8c9c22fb6b2031dd953/pydocstyle-6.3.0.tar.gz", hash = "sha256:7ce43f0c0ac87b07494eb9c0b462c0b73e6ff276807f204d6b53edc72b7e44e1", size = 36796 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/ea/99ddefac41971acad68f14114f38261c1f27dac0b3ec529824ebc739bdaa/pydocstyle-6.3.0-py3-none-any.whl", hash = "sha256:118762d452a49d6b05e194ef344a55822987a462831ade91ec5c06fd2169d019", size = 38038 }, +] + +[[package]] +name = "pygments" +version = "2.19.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, +] + +[[package]] +name = "pyjwt" +version = "2.10.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 }, +] + +[package.optional-dependencies] +crypto = [ + { name = "cryptography" }, +] + +[[package]] +name = "pymdown-extensions" +version = "10.14.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/44/e6de2fdc880ad0ec7547ca2e087212be815efbc9a425a8d5ba9ede602cbb/pymdown_extensions-10.14.3.tar.gz", hash = "sha256:41e576ce3f5d650be59e900e4ceff231e0aed2a88cf30acaee41e02f063a061b", size = 846846 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/f5/b9e2a42aa8f9e34d52d66de87941ecd236570c7ed2e87775ed23bbe4e224/pymdown_extensions-10.14.3-py3-none-any.whl", hash = "sha256:05e0bee73d64b9c71a4ae17c72abc2f700e8bc8403755a00580b49a4e9f189e9", size = 264467 }, +] + +[[package]] +name = "pymysql" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/ce59b5e5ed4ce8512f879ff1fa5ab699d211ae2495f1adaa5fbba2a1eada/pymysql-1.1.1.tar.gz", hash = "sha256:e127611aaf2b417403c60bf4dc570124aeb4a57f5f37b8e95ae399a42f904cd0", size = 47678 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/94/e4181a1f6286f545507528c78016e00065ea913276888db2262507693ce5/PyMySQL-1.1.1-py3-none-any.whl", hash = "sha256:4de15da4c61dc132f4fb9ab763063e693d521a80fd0e87943b9a453dd4c19d6c", size = 44972 }, +] + +[[package]] +name = "pynpm" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/f0/9208f411486a55414915ee572ab6a01bd4d568b866e2fbd709e43100a8fe/pynpm-0.3.0.tar.gz", hash = "sha256:a69fcaac33e8521ea779484ca78d60e38046b18a0f329d9cd96848e3e0952d26", size = 18217 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/e4/6c83230d1112252ec7dff979e858f6ba3182cb863fbf0d17b3cd97f1ff2b/pynpm-0.3.0-py2.py3-none-any.whl", hash = "sha256:5c0319ffba489ff87badc67ddedf6ee60cc4ade220c36b1b47f4b16a8a3e62a7", size = 6316 }, +] + +[[package]] +name = "pyparsing" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 }, +] + +[[package]] +name = "pyproject-hooks" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/82/28175b2414effca1cdac8dc99f76d660e7a4fb0ceefa4b4ab8f5f6742925/pyproject_hooks-1.2.0.tar.gz", hash = "sha256:1e859bd5c40fae9448642dd871adf459e5e2084186e8d2c2a79a824c970da1f8", size = 19228 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl", hash = "sha256:9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913", size = 10216 }, +] + +[[package]] +name = "pytest" +version = "7.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "py" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a4/a7/8c63a4966935b0d0b039fd67ebf2e1ae00f1af02ceb912d838814d772a9a/pytest-7.1.3.tar.gz", hash = "sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39", size = 1257801 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/b9/3541bbcb412a9fd56593005ff32183825634ef795a1c01ceb6dee86e7259/pytest-7.1.3-py3-none-any.whl", hash = "sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7", size = 298172 }, +] + +[[package]] +name = "pytest-black" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "black" }, + { name = "pytest" }, + { name = "toml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/11/20/b0a2b3e1c09b61831d5c702d9e0579fc935e6a2527ce66dec1ba580a722b/pytest_black-0.6.0.tar.gz", hash = "sha256:ecb77455f379805cb4bd8f45a813a3754c3bbee3199adf1b3665c0dfd086b511", size = 6281 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/0f/71303b06ef91f6e9447efb14cc37755b2224ff7109422fef125cb357d7d3/pytest_black-0.6.0-py3-none-any.whl", hash = "sha256:7eb747f54b6c997497b5cbc66a988be114b92016dbfa66d210d1d1f9f6b2dc76", size = 4592 }, +] + +[[package]] +name = "pytest-cov" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/45/9b538de8cef30e17c7b45ef42f538a94889ed6a16f2387a6c89e73220651/pytest-cov-6.0.0.tar.gz", hash = "sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0", size = 66945 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/3b/48e79f2cd6a61dbbd4807b4ed46cb564b4fd50a76166b1c4ea5c1d9e2371/pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35", size = 22949 }, +] + +[[package]] +name = "pytest-flask" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "pytest" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/23/32b36d2f769805c0f3069ca8d9eeee77b27fcf86d41d40c6061ddce51c7d/pytest-flask-1.3.0.tar.gz", hash = "sha256:58be1c97b21ba3c4d47e0a7691eb41007748506c36bf51004f78df10691fa95e", size = 35816 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/de/03/7a917fda3d0e96b4e80ab1f83a6628ec4ee4a882523b49417d3891bacc9e/pytest_flask-1.3.0-py3-none-any.whl", hash = "sha256:c0e36e6b0fddc3b91c4362661db83fa694d1feb91fa505475be6732b5bc8c253", size = 13105 }, +] + +[[package]] +name = "pytest-github-actions-annotate-failures" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/d4/c54ee6a871eee4a7468e3a8c0dead28e634c0bc2110c694309dcb7563a66/pytest_github_actions_annotate_failures-0.3.0.tar.gz", hash = "sha256:d4c3177c98046c3900a7f8ddebb22ea54b9f6822201b5d3ab8fcdea51e010db7", size = 11248 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/73/7b0b15cb8605ee967b34aa1d949737ab664f94e6b0f1534e8339d9e64ab2/pytest_github_actions_annotate_failures-0.3.0-py3-none-any.whl", hash = "sha256:41ea558ba10c332c0bfc053daeee0c85187507b2034e990f21e4f7e5fef044cf", size = 6030 }, +] + +[[package]] +name = "pytest-invenio" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "check-manifest" }, + { name = "coverage" }, + { name = "docker-services-cli" }, + { name = "flask" }, + { name = "importlib-metadata" }, + { name = "importlib-resources" }, + { name = "pytest" }, + { name = "pytest-cov" }, + { name = "pytest-flask" }, + { name = "pytest-github-actions-annotate-failures" }, + { name = "pytest-isort" }, + { name = "pytest-pycodestyle" }, + { name = "pytest-pydocstyle" }, + { name = "selenium" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/b2/ec72f43a1b93e5f060eb3f227c7e1f530af0f41c7882c3768e7a0baa8919/pytest-invenio-2.2.1.tar.gz", hash = "sha256:8c40a370f8fb02087a4c1d031f2c23c54d8a1481be5e783532eb823c826a6ec2", size = 40072 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/a1/20caf2586c248960d032aecb08930eecf7315e93f7f86c13c8f350072df0/pytest_invenio-2.2.1-py2.py3-none-any.whl", hash = "sha256:b759a791c94fc79d811ad74acf795fa3b5b1293a0cd852527d537d7d40f9a180", size = 23420 }, +] + +[[package]] +name = "pytest-isort" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "isort" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/69/f0/024f4a2ee0b4799a720f352dd7ef9a99077b48bd2c050ff2b08c14feb41d/pytest_isort-4.0.0.tar.gz", hash = "sha256:00e99642e282b00b849cf9b49d9102a02ab8c4ec549ace57d7868b723713aaa9", size = 5597 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/a6/848a7bdec751e5648e7200c0e5339398eb9607666d83848840c8c1553a80/pytest_isort-4.0.0-py3-none-any.whl", hash = "sha256:14bb3281bab587d6beb53129481e8885232249ec5cfeaf5d903a561ff0589620", size = 6899 }, +] + +[[package]] +name = "pytest-mock" +version = "3.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/90/a955c3ab35ccd41ad4de556596fa86685bf4fc5ffcc62d22d856cfd4e29a/pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0", size = 32814 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/3b/b26f90f74e2986a82df6e7ac7e319b8ea7ccece1caec9f8ab6104dc70603/pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f", size = 9863 }, +] + +[[package]] +name = "pytest-mypy" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "filelock" }, + { name = "mypy" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b0/50/3ce149b469e27848c1dc354553b17774f9dde0140625f5a4130bd21e1052/pytest_mypy-1.0.1.tar.gz", hash = "sha256:3f5fcaff75c80dccc6b68cf5ecc28e1bbe71e95309469eb7a28bf408ce55c074", size = 15975 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/93/25ed3c02e15c4ef1b04cbda7c708ffc5da755986aaacfb48db1f9e84a996/pytest_mypy-1.0.1-py3-none-any.whl", hash = "sha256:ad7133c9b92c802e032f2596590ebede7eea7c418e61d60d5cdd571b55c72056", size = 8701 }, +] + +[[package]] +name = "pytest-pycodestyle" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "py" }, + { name = "pycodestyle" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/67/38/47ce6e4a23878fa5e352aa9130e2f6ea9285945bcfc595e0c888a1cd99e3/pytest_pycodestyle-2.4.1.tar.gz", hash = "sha256:27cfebd52774ad55cceadce959913892b3b0989fc02400ef76a004a8b32ab5c9", size = 5284 } + +[[package]] +name = "pytest-pydocstyle" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydocstyle" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/cd/555a357a1da1c680b6417dec1aff2f5187f5559a06297b6cfab930745fc0/pytest_pydocstyle-2.4.0.tar.gz", hash = "sha256:3770689778ad8d0de8cb51264f3d9b807c11d0ecc31f95e7025426eec126c4d2", size = 5583 } + +[[package]] +name = "pytest-ruff" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "ruff" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/28/4d4e312a16c8969f475f6e18741bc6a2f8ee70d78e16dc3b6deba9f94e6d/pytest_ruff-0.4.1.tar.gz", hash = "sha256:2c9a30f15f384c229c881b52ec86cfaf1e79d39530dd7dd5f2d6aebe278f7eb7", size = 3919 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/7a/ed1015e97fadfde96b2c439390dc5a75542a77982d775baf2ada9f536cac/pytest_ruff-0.4.1-py3-none-any.whl", hash = "sha256:69acd5b2ba68d65998c730b5b4d656788193190e45f61a53aa66ef8b390634a4", size = 4589 }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, +] + +[[package]] +name = "python-dotenv" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, +] + +[[package]] +name = "python-geoip" +version = "1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/65/cb04188154f7626e897d55f04c2542ba4205352f158cd925d314ad1998ef/python-geoip-1.2.tar.gz", hash = "sha256:b7b11dab42bffba56943b3199e3441f41cea145244d215844ecb6de3d5fb2df5", size = 6661 } + +[[package]] +name = "python-iso639" +version = "2025.2.18" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/19/45aa1917c7b1f4eb71104795b9b0cbf97169b99ec46cd303445883536549/python_iso639-2025.2.18.tar.gz", hash = "sha256:34e31e8e76eb3fc839629e257b12bcfd957c6edcbd486bbf66ba5185d1f566e8", size = 173552 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/a3/3ceaf89a17a1e1d5e7bbdfe5514aa3055d91285b37a5c8fed662969e3d56/python_iso639-2025.2.18-py3-none-any.whl", hash = "sha256:b2d471c37483a26f19248458b20e7bd96492e15368b01053b540126bcc23152f", size = 167631 }, +] + +[[package]] +name = "python-slugify" +version = "8.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "text-unidecode" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051 }, +] + +[[package]] +name = "python-stdnum" +version = "1.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/40/3f/dd322d9408e1850a8f0faab8e2a4bf2a55c0b722a72f7579362177dfad72/python-stdnum-1.20.tar.gz", hash = "sha256:ad2a2cf2eb025de408210235f36b4ae31252de3186240ccaa8126e117cb82690", size = 1191978 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/0f/8639d60f6d7c169836694aa81504c4ee9a95dfb73ccdb16be66df4785f52/python_stdnum-1.20-py2.py3-none-any.whl", hash = "sha256:111008e10391d54fb2afad2a10df70d5cb0c6c0a7ec82fec6f022cb8712961d3", size = 1059803 }, +] + +[[package]] +name = "python3-saml" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "isodate" }, + { name = "lxml" }, + { name = "xmlsec" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5d/98/6e0268c3a9893af3d4c5cf670183e0314cd6b5cb034a612d6a7cc5060df8/python3-saml-1.16.0.tar.gz", hash = "sha256:97c9669aecabc283c6e5fb4eb264f446b6e006f5267d01c9734f9d8bffdac133", size = 83468 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/14/49d9828443b58bd5cc80a454c91b0f867fbf36a24975d501945e6cb9e32f/python3_saml-1.16.0-py3-none-any.whl", hash = "sha256:20b97d11b04f01ee22e98f4a38242e2fea2e28fbc7fbc9bdd57cab5ac7fc2d0d", size = 76155 }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, +] + +[[package]] +name = "pywebpack" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-metadata" }, + { name = "pynpm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/50/8110373f6c1e1216b3dc791ccbe388630632578369be35b40f23cc78e339/pywebpack-2.1.0.tar.gz", hash = "sha256:ecc6b731db3b9448822ecb236923912379782dd81c6a3fba7cae8fa368b8db6c", size = 33304 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/79/5fb3ce5c011e40551d75afbbc99f4a185ae28af726a86b70dec7527c0a69/pywebpack-2.1.0-py2.py3-none-any.whl", hash = "sha256:d7ce2b0ce41ecd2809ae3cc7f8c4a8f927cf9f96da1340cd7e80b6b1dc5b55f9", size = 17598 }, +] + +[[package]] +name = "pywin32" +version = "310" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, + { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384 }, + { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039 }, + { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152 }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +] + +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911 }, +] + +[[package]] +name = "pyzmq" +version = "26.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/ed/c3876f3b3e8beba336214ce44e1efa1792dd537027cef24192ac2b077d7c/pyzmq-26.3.0.tar.gz", hash = "sha256:f1cd68b8236faab78138a8fc703f7ca0ad431b17a3fcac696358600d4e6243b3", size = 276733 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/03/7170c3814bb9106c1bca67700c731aaf1cd990fd2f0097c754acb600330e/pyzmq-26.3.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:c80653332c6136da7f4d4e143975e74ac0fa14f851f716d90583bc19e8945cea", size = 1348354 }, + { url = "https://files.pythonhosted.org/packages/74/f3/908b17f9111cdc764aef1de3d36026a2984c46ed90c3c2c85f28b66142f0/pyzmq-26.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6e317ee1d4528a03506cb1c282cd9db73660a35b3564096de37de7350e7d87a7", size = 671056 }, + { url = "https://files.pythonhosted.org/packages/02/ad/afcb8484b65ceacd1609f709c2caeed31bd6c49261a7507cd5c175cc105f/pyzmq-26.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:943a22ebb3daacb45f76a9bcca9a7b74e7d94608c0c0505da30af900b998ca8d", size = 908597 }, + { url = "https://files.pythonhosted.org/packages/a1/b5/4eeeae0aaaa6ef0c74cfa8b2273b53382bd858df6d99485f2fc8211e7002/pyzmq-26.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3fc9e71490d989144981ea21ef4fdfaa7b6aa84aff9632d91c736441ce2f6b00", size = 865260 }, + { url = "https://files.pythonhosted.org/packages/74/6a/63db856e93e3a3c3dc98a1de28a902cf1b21c7b0d3856cd5931d7cfd30af/pyzmq-26.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e281a8071a06888575a4eb523c4deeefdcd2f5fe4a2d47e02ac8bf3a5b49f695", size = 859916 }, + { url = "https://files.pythonhosted.org/packages/e1/ce/d522c9b46ee3746d4b98c81969c568c2c6296e931a65f2c87104b645654c/pyzmq-26.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:be77efd735bb1064605be8dec6e721141c1421ef0b115ef54e493a64e50e9a52", size = 1201368 }, + { url = "https://files.pythonhosted.org/packages/5a/56/29dcd3647a39e933eb489fda261a1e2700a59d4a9432889a85166e15651c/pyzmq-26.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7a4ac2ffa34f1212dd586af90f4ba894e424f0cabb3a49cdcff944925640f6ac", size = 1512663 }, + { url = "https://files.pythonhosted.org/packages/6b/36/7c570698127a43398ed1b1832dada59496e633115016addbce5eda9938a6/pyzmq-26.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ba698c7c252af83b6bba9775035263f0df5f807f0404019916d4b71af8161f66", size = 1411693 }, + { url = "https://files.pythonhosted.org/packages/de/54/51d39bef85a7cdbca36227f7defdbfcdc5011b8361a3bfc0e8df431f5a5d/pyzmq-26.3.0-cp312-cp312-win32.whl", hash = "sha256:214038aaa88e801e54c2ef0cfdb2e6df27eb05f67b477380a452b595c5ecfa37", size = 581244 }, + { url = "https://files.pythonhosted.org/packages/f2/6a/9512b11a1d0c5648534f03d5ab0c3222f55dc9c192029c1cb00a0ca044e2/pyzmq-26.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:bad7fe0372e505442482ca3ccbc0d6f38dae81b1650f57a0aa6bbee18e7df495", size = 643559 }, + { url = "https://files.pythonhosted.org/packages/27/9f/faf5c9cf91b61eeb82a5e919d024d3ac28a795c92cce817be264ccd757d3/pyzmq-26.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:b7b578d604e79e99aa39495becea013fd043fa9f36e4b490efa951f3d847a24d", size = 557664 }, + { url = "https://files.pythonhosted.org/packages/37/16/97b8c5107bfccb39120e611671a452c9ff6e8626fb3f8d4c15afd652b6ae/pyzmq-26.3.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:fa85953df84beb7b8b73cb3ec3f5d92b62687a09a8e71525c6734e020edf56fd", size = 1345691 }, + { url = "https://files.pythonhosted.org/packages/a5/61/d5572d95040c0bb5b31eed5b23f3f0f992d94e4e0de0cea62e3c7f3a85c1/pyzmq-26.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:209d09f0ab6ddbcebe64630d1e6ca940687e736f443c265ae15bc4bfad833597", size = 670622 }, + { url = "https://files.pythonhosted.org/packages/1c/0c/f0235d27388aacf4ed8bcc1d574f6f2f629da0a20610faa0a8e9d363c2b0/pyzmq-26.3.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d35cc1086f1d4f907df85c6cceb2245cb39a04f69c3f375993363216134d76d4", size = 908683 }, + { url = "https://files.pythonhosted.org/packages/cb/52/664828f9586c396b857eec088d208230463e3dc991a24df6adbad98fbaa3/pyzmq-26.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b380e9087078ba91e45fb18cdd0c25275ffaa045cf63c947be0ddae6186bc9d9", size = 865212 }, + { url = "https://files.pythonhosted.org/packages/2b/14/213b2967030b7d7aecc32dd453830f98799b3cbf2b10a40232e9f22a6520/pyzmq-26.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6d64e74143587efe7c9522bb74d1448128fdf9897cc9b6d8b9927490922fd558", size = 860068 }, + { url = "https://files.pythonhosted.org/packages/aa/e5/ff50c8fade69d1c0469652832c626d1910668697642c10cb0e1b6183ef9a/pyzmq-26.3.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:efba4f53ac7752eea6d8ca38a4ddac579e6e742fba78d1e99c12c95cd2acfc64", size = 1201303 }, + { url = "https://files.pythonhosted.org/packages/9a/e2/fff5e483be95ccc11a05781323e001e63ec15daec1d0f6f08de72ca534db/pyzmq-26.3.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:9b0137a1c40da3b7989839f9b78a44de642cdd1ce20dcef341de174c8d04aa53", size = 1512892 }, + { url = "https://files.pythonhosted.org/packages/21/75/cc44d276e43136e5692e487c3c019f816e11ed445261e434217c28cc98c4/pyzmq-26.3.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a995404bd3982c089e57b428c74edd5bfc3b0616b3dbcd6a8e270f1ee2110f36", size = 1411736 }, + { url = "https://files.pythonhosted.org/packages/ee/1c/d070cbc9a7961fe772641c51bb3798d88cb1f8e20ca718407363462624cf/pyzmq-26.3.0-cp313-cp313-win32.whl", hash = "sha256:240b1634b9e530ef6a277d95cbca1a6922f44dfddc5f0a3cd6c722a8de867f14", size = 581214 }, + { url = "https://files.pythonhosted.org/packages/38/d3/91082f1151ff5b54e0bed40eb1a26f418530ab07ecaec4dbb83e3d9fa9a9/pyzmq-26.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:fe67291775ea4c2883764ba467eb389c29c308c56b86c1e19e49c9e1ed0cbeca", size = 643412 }, + { url = "https://files.pythonhosted.org/packages/e0/cf/dabe68dfdf3e67bea6152eeec4b251cf899ee5b853cfb5c97e4719f9e6e9/pyzmq-26.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:73ca9ae9a9011b714cf7650450cd9c8b61a135180b708904f1f0a05004543dce", size = 557444 }, + { url = "https://files.pythonhosted.org/packages/c0/56/e7576ac71c1566da4f4ec586351462a2bb202143fb074bf56df8fe85dcc3/pyzmq-26.3.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:fea7efbd7e49af9d7e5ed6c506dfc7de3d1a628790bd3a35fd0e3c904dc7d464", size = 1340288 }, + { url = "https://files.pythonhosted.org/packages/f1/ab/0bca97e94d420b5908968bc479e51c3686a9f80d8893450eefcd673b1b1d/pyzmq-26.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4430c7cba23bb0e2ee203eee7851c1654167d956fc6d4b3a87909ccaf3c5825", size = 662462 }, + { url = "https://files.pythonhosted.org/packages/ee/be/99e89b55863808da322ac3ab52d8e135dcf2241094aaa468bfe2923d5194/pyzmq-26.3.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:016d89bee8c7d566fad75516b4e53ec7c81018c062d4c51cd061badf9539be52", size = 896464 }, + { url = "https://files.pythonhosted.org/packages/38/d4/a4be06a313c8d6a5fe1d92975db30aca85f502e867fca392532e06a28c3c/pyzmq-26.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04bfe59852d76d56736bfd10ac1d49d421ab8ed11030b4a0332900691507f557", size = 853432 }, + { url = "https://files.pythonhosted.org/packages/12/e6/e608b4c34106bbf5b3b382662ea90a43b2e23df0aa9c1f0fd4e21168d523/pyzmq-26.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:1fe05bd0d633a0f672bb28cb8b4743358d196792e1caf04973b7898a0d70b046", size = 845884 }, + { url = "https://files.pythonhosted.org/packages/c3/a9/d5e6355308ba529d9cd3576ee8bb3b2e2b726571748f515fbb8559401f5b/pyzmq-26.3.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:2aa1a9f236d5b835fb8642f27de95f9edcfd276c4bc1b6ffc84f27c6fb2e2981", size = 1191454 }, + { url = "https://files.pythonhosted.org/packages/6a/9a/a21dc6c73ac242e425709c1e0049368d8f5db5de7c1102a45f93f5c492b3/pyzmq-26.3.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:21399b31753bf321043ea60c360ed5052cc7be20739785b1dff1820f819e35b3", size = 1500397 }, + { url = "https://files.pythonhosted.org/packages/87/88/0236056156da0278c9ca2e2562463643597808b5bbd6c34009ba217e7e92/pyzmq-26.3.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:d015efcd96aca8882057e7e6f06224f79eecd22cad193d3e6a0a91ec67590d1f", size = 1398401 }, +] + +[[package]] +name = "redis" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/47/da/d283a37303a995cd36f8b92db85135153dc4f7a8e4441aa827721b442cfb/redis-5.2.1.tar.gz", hash = "sha256:16f2e22dff21d5125e8481515e386711a34cbec50f0e44413dd7d9c060a54e0f", size = 4608355 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/5f/fa26b9b2672cbe30e07d9a5bdf39cf16e3b80b42916757c5f92bca88e4ba/redis-5.2.1-py3-none-any.whl", hash = "sha256:ee7e1056b9aea0f04c6c2ed59452947f34c4940ee025f5dd83e6a6418b6989e4", size = 261502 }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, +] + +[[package]] +name = "regex" +version = "2024.11.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781 }, + { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455 }, + { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759 }, + { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976 }, + { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077 }, + { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160 }, + { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896 }, + { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997 }, + { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725 }, + { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481 }, + { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896 }, + { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138 }, + { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692 }, + { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135 }, + { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567 }, + { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525 }, + { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324 }, + { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617 }, + { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023 }, + { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072 }, + { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130 }, + { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857 }, + { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006 }, + { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650 }, + { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545 }, + { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045 }, + { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182 }, + { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733 }, + { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122 }, + { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "requests-mock" +version = "1.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/92/32/587625f91f9a0a3d84688bf9cfc4b2480a7e8ec327cefd0ff2ac891fd2cf/requests-mock-1.12.1.tar.gz", hash = "sha256:e9e12e333b525156e82a3c852f22016b9158220d2f47454de9cae8a77d371401", size = 60901 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/ec/889fbc557727da0c34a33850950310240f2040f3b1955175fdb2b36a8910/requests_mock-1.12.1-py2.py3-none-any.whl", hash = "sha256:b1e37054004cdd5e56c84454cc7df12b25f90f382159087f4b6915aaeef39563", size = 27695 }, +] + +[[package]] +name = "requests-oauthlib" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "oauthlib" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/62/49/88b3b9019c649f63e722208dc540dbcb144c6f53e24bf438117bec8e64dc/requests-oauthlib-1.1.0.tar.gz", hash = "sha256:eabd8eb700ebed81ba080c6ead96d39d6bdc39996094bd23000204f6965786b0", size = 72369 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/d2/91fd85529288418f81e9ed9347b1c548df09327059515cac39e1727b349f/requests_oauthlib-1.1.0-py2.py3-none-any.whl", hash = "sha256:be76f2bb72ca5525998e81d47913e09b1ca8b7957ae89b46f787a79e68ad5e61", size = 21414 }, +] + +[[package]] +name = "rich" +version = "12.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "commonmark" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/11/23/814edf09ec6470d52022b9e95c23c1bef77f0bc451761e1504ebd09606d3/rich-12.6.0.tar.gz", hash = "sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0", size = 220114 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/60/81ac2e7d1e3b861ab478a72e3b20fc91c4302acd2274822e493758941829/rich-12.6.0-py3-none-any.whl", hash = "sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e", size = 237505 }, +] + +[[package]] +name = "rpds-py" +version = "0.23.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/79/2ce611b18c4fd83d9e3aecb5cba93e1917c050f556db39842889fa69b79f/rpds_py-0.23.1.tar.gz", hash = "sha256:7f3240dcfa14d198dba24b8b9cb3b108c06b68d45b7babd9eefc1038fdf7e707", size = 26806 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/8c/d17efccb9f5b9137ddea706664aebae694384ae1d5997c0202093e37185a/rpds_py-0.23.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3902df19540e9af4cc0c3ae75974c65d2c156b9257e91f5101a51f99136d834c", size = 364369 }, + { url = "https://files.pythonhosted.org/packages/6e/c0/ab030f696b5c573107115a88d8d73d80f03309e60952b64c584c70c659af/rpds_py-0.23.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66f8d2a17e5838dd6fb9be6baaba8e75ae2f5fa6b6b755d597184bfcd3cb0eba", size = 349965 }, + { url = "https://files.pythonhosted.org/packages/b3/55/b40170f5a079c4fb0b6a82b299689e66e744edca3c3375a8b160fb797660/rpds_py-0.23.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:112b8774b0b4ee22368fec42749b94366bd9b536f8f74c3d4175d4395f5cbd31", size = 389064 }, + { url = "https://files.pythonhosted.org/packages/ab/1c/b03a912c59ec7c1e16b26e587b9dfa8ddff3b07851e781e8c46e908a365a/rpds_py-0.23.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e0df046f2266e8586cf09d00588302a32923eb6386ced0ca5c9deade6af9a149", size = 397741 }, + { url = "https://files.pythonhosted.org/packages/52/6f/151b90792b62fb6f87099bcc9044c626881fdd54e31bf98541f830b15cea/rpds_py-0.23.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3288930b947cbebe767f84cf618d2cbe0b13be476e749da0e6a009f986248c", size = 448784 }, + { url = "https://files.pythonhosted.org/packages/71/2a/6de67c0c97ec7857e0e9e5cd7c52405af931b303eb1e5b9eff6c50fd9a2e/rpds_py-0.23.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ce473a2351c018b06dd8d30d5da8ab5a0831056cc53b2006e2a8028172c37ce5", size = 440203 }, + { url = "https://files.pythonhosted.org/packages/db/5e/e759cd1c276d98a4b1f464b17a9bf66c65d29f8f85754e27e1467feaa7c3/rpds_py-0.23.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d550d7e9e7d8676b183b37d65b5cd8de13676a738973d330b59dc8312df9c5dc", size = 391611 }, + { url = "https://files.pythonhosted.org/packages/1c/1e/2900358efcc0d9408c7289769cba4c0974d9db314aa884028ed7f7364f61/rpds_py-0.23.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e14f86b871ea74c3fddc9a40e947d6a5d09def5adc2076ee61fb910a9014fb35", size = 423306 }, + { url = "https://files.pythonhosted.org/packages/23/07/6c177e6d059f5d39689352d6c69a926ee4805ffdb6f06203570234d3d8f7/rpds_py-0.23.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1bf5be5ba34e19be579ae873da515a2836a2166d8d7ee43be6ff909eda42b72b", size = 562323 }, + { url = "https://files.pythonhosted.org/packages/70/e4/f9097fd1c02b516fff9850792161eb9fc20a2fd54762f3c69eae0bdb67cb/rpds_py-0.23.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d7031d493c4465dbc8d40bd6cafefef4bd472b17db0ab94c53e7909ee781b9ef", size = 588351 }, + { url = "https://files.pythonhosted.org/packages/87/39/5db3c6f326bfbe4576ae2af6435bd7555867d20ae690c786ff33659f293b/rpds_py-0.23.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:55ff4151cfd4bc635e51cfb1c59ac9f7196b256b12e3a57deb9e5742e65941ad", size = 557252 }, + { url = "https://files.pythonhosted.org/packages/fd/14/2d5ad292f144fa79bafb78d2eb5b8a3a91c358b6065443cb9c49b5d1fedf/rpds_py-0.23.1-cp312-cp312-win32.whl", hash = "sha256:a9d3b728f5a5873d84cba997b9d617c6090ca5721caaa691f3b1a78c60adc057", size = 222181 }, + { url = "https://files.pythonhosted.org/packages/a3/4f/0fce63e0f5cdd658e71e21abd17ac1bc9312741ebb8b3f74eeed2ebdf771/rpds_py-0.23.1-cp312-cp312-win_amd64.whl", hash = "sha256:b03a8d50b137ee758e4c73638b10747b7c39988eb8e6cd11abb7084266455165", size = 237426 }, + { url = "https://files.pythonhosted.org/packages/13/9d/b8b2c0edffb0bed15be17b6d5ab06216f2f47f9ee49259c7e96a3ad4ca42/rpds_py-0.23.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:4caafd1a22e5eaa3732acb7672a497123354bef79a9d7ceed43387d25025e935", size = 363672 }, + { url = "https://files.pythonhosted.org/packages/bd/c2/5056fa29e6894144d7ba4c938b9b0445f75836b87d2dd00ed4999dc45a8c/rpds_py-0.23.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:178f8a60fc24511c0eb756af741c476b87b610dba83270fce1e5a430204566a4", size = 349602 }, + { url = "https://files.pythonhosted.org/packages/b0/bc/33779a1bb0ee32d8d706b173825aab75c628521d23ce72a7c1e6a6852f86/rpds_py-0.23.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c632419c3870507ca20a37c8f8f5352317aca097639e524ad129f58c125c61c6", size = 388746 }, + { url = "https://files.pythonhosted.org/packages/62/0b/71db3e36b7780a619698ec82a9c87ab44ad7ca7f5480913e8a59ff76f050/rpds_py-0.23.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:698a79d295626ee292d1730bc2ef6e70a3ab135b1d79ada8fde3ed0047b65a10", size = 397076 }, + { url = "https://files.pythonhosted.org/packages/bb/2e/494398f613edf77ba10a916b1ddea2acce42ab0e3b62e2c70ffc0757ce00/rpds_py-0.23.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:271fa2184cf28bdded86bb6217c8e08d3a169fe0bbe9be5e8d96e8476b707122", size = 448399 }, + { url = "https://files.pythonhosted.org/packages/dd/53/4bd7f5779b1f463243ee5fdc83da04dd58a08f86e639dbffa7a35f969a84/rpds_py-0.23.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b91cceb5add79ee563bd1f70b30896bd63bc5f78a11c1f00a1e931729ca4f1f4", size = 439764 }, + { url = "https://files.pythonhosted.org/packages/f6/55/b3c18c04a460d951bf8e91f2abf46ce5b6426fb69784166a6a25827cb90a/rpds_py-0.23.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a6cb95074777f1ecda2ca4fa7717caa9ee6e534f42b7575a8f0d4cb0c24013", size = 390662 }, + { url = "https://files.pythonhosted.org/packages/2a/65/cc463044a3cbd616029b2aa87a651cdee8288d2fdd7780b2244845e934c1/rpds_py-0.23.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:50fb62f8d8364978478b12d5f03bf028c6bc2af04082479299139dc26edf4c64", size = 422680 }, + { url = "https://files.pythonhosted.org/packages/fa/8e/1fa52990c7836d72e8d70cd7753f2362c72fbb0a49c1462e8c60e7176d0b/rpds_py-0.23.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c8f7e90b948dc9dcfff8003f1ea3af08b29c062f681c05fd798e36daa3f7e3e8", size = 561792 }, + { url = "https://files.pythonhosted.org/packages/57/b8/fe3b612979b1a29d0c77f8585903d8b3a292604b26d4b300e228b8ac6360/rpds_py-0.23.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5b98b6c953e5c2bda51ab4d5b4f172617d462eebc7f4bfdc7c7e6b423f6da957", size = 588127 }, + { url = "https://files.pythonhosted.org/packages/44/2d/fde474de516bbc4b9b230f43c98e7f8acc5da7fc50ceed8e7af27553d346/rpds_py-0.23.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:2893d778d4671ee627bac4037a075168b2673c57186fb1a57e993465dbd79a93", size = 556981 }, + { url = "https://files.pythonhosted.org/packages/18/57/767deeb27b81370bbab8f74ef6e68d26c4ea99018f3c71a570e506fede85/rpds_py-0.23.1-cp313-cp313-win32.whl", hash = "sha256:2cfa07c346a7ad07019c33fb9a63cf3acb1f5363c33bc73014e20d9fe8b01cdd", size = 221936 }, + { url = "https://files.pythonhosted.org/packages/7d/6c/3474cfdd3cafe243f97ab8474ea8949236eb2a1a341ca55e75ce00cd03da/rpds_py-0.23.1-cp313-cp313-win_amd64.whl", hash = "sha256:3aaf141d39f45322e44fc2c742e4b8b4098ead5317e5f884770c8df0c332da70", size = 237145 }, + { url = "https://files.pythonhosted.org/packages/ec/77/e985064c624230f61efa0423759bb066da56ebe40c654f8b5ba225bd5d63/rpds_py-0.23.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:759462b2d0aa5a04be5b3e37fb8183615f47014ae6b116e17036b131985cb731", size = 359623 }, + { url = "https://files.pythonhosted.org/packages/62/d9/a33dcbf62b29e40559e012d525bae7d516757cf042cc9234bd34ca4b6aeb/rpds_py-0.23.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3e9212f52074fc9d72cf242a84063787ab8e21e0950d4d6709886fb62bcb91d5", size = 345900 }, + { url = "https://files.pythonhosted.org/packages/92/eb/f81a4be6397861adb2cb868bb6a28a33292c2dcac567d1dc575226055e55/rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e9f3a3ac919406bc0414bbbd76c6af99253c507150191ea79fab42fdb35982a", size = 386426 }, + { url = "https://files.pythonhosted.org/packages/09/47/1f810c9b5e83be005341201b5389f1d240dfa440346ea7189f9b3fd6961d/rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c04ca91dda8a61584165825907f5c967ca09e9c65fe8966ee753a3f2b019fe1e", size = 392314 }, + { url = "https://files.pythonhosted.org/packages/83/bd/bc95831432fd6c46ed8001f01af26de0763a059d6d7e6d69e3c5bf02917a/rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ab923167cfd945abb9b51a407407cf19f5bee35001221f2911dc85ffd35ff4f", size = 447706 }, + { url = "https://files.pythonhosted.org/packages/19/3e/567c04c226b1802dc6dc82cad3d53e1fa0a773258571c74ac5d8fbde97ed/rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ed6f011bedca8585787e5082cce081bac3d30f54520097b2411351b3574e1219", size = 437060 }, + { url = "https://files.pythonhosted.org/packages/fe/77/a77d2c6afe27ae7d0d55fc32f6841502648070dc8d549fcc1e6d47ff8975/rpds_py-0.23.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6959bb9928c5c999aba4a3f5a6799d571ddc2c59ff49917ecf55be2bbb4e3722", size = 389347 }, + { url = "https://files.pythonhosted.org/packages/3f/47/6b256ff20a74cfebeac790ab05586e0ac91f88e331125d4740a6c86fc26f/rpds_py-0.23.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1ed7de3c86721b4e83ac440751329ec6a1102229aa18163f84c75b06b525ad7e", size = 415554 }, + { url = "https://files.pythonhosted.org/packages/fc/29/d4572469a245bc9fc81e35166dca19fc5298d5c43e1a6dd64bf145045193/rpds_py-0.23.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5fb89edee2fa237584e532fbf78f0ddd1e49a47c7c8cfa153ab4849dc72a35e6", size = 557418 }, + { url = "https://files.pythonhosted.org/packages/9c/0a/68cf7228895b1a3f6f39f51b15830e62456795e61193d2c8b87fd48c60db/rpds_py-0.23.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:7e5413d2e2d86025e73f05510ad23dad5950ab8417b7fc6beaad99be8077138b", size = 583033 }, + { url = "https://files.pythonhosted.org/packages/14/18/017ab41dcd6649ad5db7d00155b4c212b31ab05bd857d5ba73a1617984eb/rpds_py-0.23.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d31ed4987d72aabdf521eddfb6a72988703c091cfc0064330b9e5f8d6a042ff5", size = 554880 }, + { url = "https://files.pythonhosted.org/packages/2e/dd/17de89431268da8819d8d51ce67beac28d9b22fccf437bc5d6d2bcd1acdb/rpds_py-0.23.1-cp313-cp313t-win32.whl", hash = "sha256:f3429fb8e15b20961efca8c8b21432623d85db2228cc73fe22756c6637aa39e7", size = 219743 }, + { url = "https://files.pythonhosted.org/packages/68/15/6d22d07e063ce5e9bfbd96db9ec2fbb4693591b4503e3a76996639474d02/rpds_py-0.23.1-cp313-cp313t-win_amd64.whl", hash = "sha256:d6f6512a90bd5cd9030a6237f5346f046c6f0e40af98657568fa45695d4de59d", size = 235415 }, +] + +[[package]] +name = "ruff" +version = "0.11.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/93/f51326459536f64876c932ed26c54fad11775dfda9a690966a8a8a3388d2/ruff-0.11.3.tar.gz", hash = "sha256:8d5fcdb3bb359adc12b757ed832ee743993e7474b9de714bb9ea13c4a8458bf9", size = 3902954 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/55/54/34341a6363405eea37d05d0062d3f4bff4b268b08e8f4f36fb6f4593b653/ruff-0.11.3-py3-none-linux_armv6l.whl", hash = "sha256:cb893a5eedff45071d52565300a20cd4ac088869e156b25e0971cb98c06f5dd7", size = 10097109 }, + { url = "https://files.pythonhosted.org/packages/ee/33/636511dcacae6710660aa1d746c98f1b63d969b5b04fb4dcaf9a3b068a3f/ruff-0.11.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:58edd48af0e201e2f494789de80f5b2f2b46c9a2991a12ea031254865d5f6aa3", size = 10896580 }, + { url = "https://files.pythonhosted.org/packages/1c/d0/b196c659fa4c9bea394833fcf1e9ff92a941d59474374e3cbda0ba548d2b/ruff-0.11.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:520f6ade25cea98b2e5cb29eb0906f6a0339c6b8e28a024583b867f48295f1ed", size = 10235125 }, + { url = "https://files.pythonhosted.org/packages/31/27/8010ce0b5dae8ad994635c2b112df76f10e9747802ac417a68a06349971f/ruff-0.11.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1ca4405a93ebbc05e924358f872efceb1498c3d52a989ddf9476712a5480b16", size = 10398941 }, + { url = "https://files.pythonhosted.org/packages/ed/82/0e6eba1371cc221d5a7255a144dc5ab05f13d2aba46224f38b6628781647/ruff-0.11.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f4341d38775a6be605ce7cd50e951b89de65cbd40acb0399f95b8e1524d604c8", size = 9946629 }, + { url = "https://files.pythonhosted.org/packages/4c/9d/8c03b84476187d48eae3ba5f3b7d550da9b5947ab967d47f832e6141c1b2/ruff-0.11.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72bf5b49e4b546f4bea6c05448ab71919b09cf75363adf5e3bf5276124afd31c", size = 11551896 }, + { url = "https://files.pythonhosted.org/packages/a8/63/cf7915adf71d72ccc95b24f9ea3637311f8efe8221a24400d823607e998a/ruff-0.11.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:9fa791ee6c3629ba7f9ba2c8f2e76178b03f3eaefb920e426302115259819237", size = 12210030 }, + { url = "https://files.pythonhosted.org/packages/9c/b3/2bbfd8aee10de3eed807c9c3d5b48f927efbdada8c0e87a20073f1eb2537/ruff-0.11.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2c81d3fe718f4d303aaa4ccdcd0f43e23bb2127da3353635f718394ca9b26721", size = 11643431 }, + { url = "https://files.pythonhosted.org/packages/5b/00/0343bec91e505be5f6ac1db13ffca0afe691789e1dc263a05a72b931570f/ruff-0.11.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e4c38e9b6c01caaba46b6d8e732791f4c78389a9923319991d55b298017ce02", size = 13834449 }, + { url = "https://files.pythonhosted.org/packages/d4/d1/95ef70afe169400d1878e69ed4fa8b8361e3c5d0a25d2d3d5c25e6347590/ruff-0.11.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9686f5d1a2b4c918b5a6e9876bfe7f47498a990076624d41f57d17aadd02a4dd", size = 11356995 }, + { url = "https://files.pythonhosted.org/packages/92/fa/a1d68e12c9a2cb25bf8eef099381ca42ea3c8ed589fc4f04004466f4d19f/ruff-0.11.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4800ddc4764d42d8961ce4cb972bcf5cc2730d11cca3f11f240d9f7360460408", size = 10287108 }, + { url = "https://files.pythonhosted.org/packages/3c/31/711a3f2c0972f44e3770951a19a1b6ea551b9b7c08f257518c35a46666bd/ruff-0.11.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:e63a2808879361aa9597d88d86380d8fb934953ef91f5ff3dafe18d9cb0b1e14", size = 9933317 }, + { url = "https://files.pythonhosted.org/packages/c4/ee/8c8dd6ec903f29a4bd1bd4510d1c9ba1a955cd792601ac3822764c7397d8/ruff-0.11.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:8f8b1c4ae62638cc220df440140c21469232d8f2cb7f5059f395f7f48dcdb59e", size = 10966227 }, + { url = "https://files.pythonhosted.org/packages/f5/7c/ba479eb45803165dd3dc8accf32c7d52769f9011df958f983f2bcd40566f/ruff-0.11.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:3ea2026be50f6b1fbedd2d1757d004e1e58bd0f414efa2a6fa01235468d4c82a", size = 11412919 }, + { url = "https://files.pythonhosted.org/packages/51/a2/6878e74efef39cb0996342c48918aff9a9f5632d8d40c307610688d382ae/ruff-0.11.3-py3-none-win32.whl", hash = "sha256:73d8b90d12674a0c6e98cd9e235f2dcad09d1a80e559a585eac994bb536917a3", size = 10306265 }, + { url = "https://files.pythonhosted.org/packages/95/95/30646e735a201266ec93504a8640190e4a47a9efb10990cb095bf1111c3a/ruff-0.11.3-py3-none-win_amd64.whl", hash = "sha256:faf1bfb0a51fb3a82aa1112cb03658796acef978e37c7f807d3ecc50b52ecbf6", size = 11403990 }, + { url = "https://files.pythonhosted.org/packages/cd/2e/d04d606d0b13c2c8188111a4ff9a99811c40fe170e1523e20f13cf85235e/ruff-0.11.3-py3-none-win_arm64.whl", hash = "sha256:67f8b68d7ab909f08af1fb601696925a89d65083ae2bb3ab286e572b5dc456aa", size = 10525855 }, +] + +[[package]] +name = "s3fs" +version = "2025.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiobotocore" }, + { name = "aiohttp" }, + { name = "fsspec" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e4/cd/5dde2fed1699ff48120336249d9857a574e39feb8afaff694568ab1499b3/s3fs-2025.3.0.tar.gz", hash = "sha256:446dd539eb0d0678209723cb7ad1bedbb172185b0d34675b09be1ad81843a644", size = 77153 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/3f/35f4041a82a68df89fe4af97c8bb44aa492dad924799cbb02078e9e303e6/s3fs-2025.3.0-py3-none-any.whl", hash = "sha256:88d803615baa04945156ca0e1498009b7acd3132c07198bd81b3e874846e0aa2", size = 30454 }, +] + +[[package]] +name = "s3transfer" +version = "0.11.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246 }, +] + +[[package]] +name = "selenium" +version = "3.141.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/9c/9030520bf6ff0b4c98988448a93c04fcbd5b13cd9520074d8ed53569ccfe/selenium-3.141.0.tar.gz", hash = "sha256:deaf32b60ad91a4611b98d8002757f29e6f2c2d5fcaf202e1c9ad06d6772300d", size = 854669 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/d6/4294f0b4bce4de0abf13e17190289f9d0613b0a44e5dd6a7f5ca98459853/selenium-3.141.0-py2.py3-none-any.whl", hash = "sha256:2d7131d7bc5a5b99a2d9b04aaf2612c411b03b8ca1b1ee8d3de5845a9be2cb3c", size = 904577 }, +] + +[[package]] +name = "sentry-sdk" +version = "1.45.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c8/28/02c0cd9184f9108e3c52519f9628b215077a3854240e0b17ae845e664855/sentry_sdk-1.45.1.tar.gz", hash = "sha256:a16c997c0f4e3df63c0fc5e4207ccb1ab37900433e0f72fef88315d317829a26", size = 244774 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/9f/105366a122efa93f0cb1914f841747d160788e4d022d0488d2d44c2ba26c/sentry_sdk-1.45.1-py2.py3-none-any.whl", hash = "sha256:608887855ccfe39032bfd03936e3a1c4f4fc99b3a4ac49ced54a4220de61c9c1", size = 267163 }, +] + +[package.optional-dependencies] +flask = [ + { name = "blinker" }, + { name = "flask" }, + { name = "markupsafe" }, +] + +[[package]] +name = "setuptools" +version = "78.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/5a/0db4da3bc908df06e5efae42b44e75c81dd52716e10192ff36d0c1c8e379/setuptools-78.1.0.tar.gz", hash = "sha256:18fd474d4a82a5f83dac888df697af65afa82dec7323d09c3e37d1f14288da54", size = 1367827 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/21/f43f0a1fa8b06b32812e0975981f4677d28e0f3271601dc88ac5a5b83220/setuptools-78.1.0-py3-none-any.whl", hash = "sha256:3e386e96793c8702ae83d17b853fb93d3e09ef82ec62722e61da5cd22376dcd8", size = 1256108 }, +] + +[[package]] +name = "simplejson" +version = "3.20.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/92/51b417685abd96b31308b61b9acce7ec50d8e1de8fbc39a7fd4962c60689/simplejson-3.20.1.tar.gz", hash = "sha256:e64139b4ec4f1f24c142ff7dcafe55a22b811a74d86d66560c8815687143037d", size = 85591 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/eb/34c16a1ac9ba265d024dc977ad84e1659d931c0a700967c3e59a98ed7514/simplejson-3.20.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f31c4a3a7ab18467ee73a27f3e59158255d1520f3aad74315edde7a940f1be23", size = 93100 }, + { url = "https://files.pythonhosted.org/packages/41/fc/2c2c007d135894971e6814e7c0806936e5bade28f8db4dd7e2a58b50debd/simplejson-3.20.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:884e6183d16b725e113b83a6fc0230152ab6627d4d36cb05c89c2c5bccfa7bc6", size = 75464 }, + { url = "https://files.pythonhosted.org/packages/0f/05/2b5ecb33b776c34bb5cace5de5d7669f9b60e3ca13c113037b2ca86edfbd/simplejson-3.20.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03d7a426e416fe0d3337115f04164cd9427eb4256e843a6b8751cacf70abc832", size = 75112 }, + { url = "https://files.pythonhosted.org/packages/fe/36/1f3609a2792f06cd4b71030485f78e91eb09cfd57bebf3116bf2980a8bac/simplejson-3.20.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:000602141d0bddfcff60ea6a6e97d5e10c9db6b17fd2d6c66199fa481b6214bb", size = 150182 }, + { url = "https://files.pythonhosted.org/packages/2f/b0/053fbda38b8b602a77a4f7829def1b4f316cd8deb5440a6d3ee90790d2a4/simplejson-3.20.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:af8377a8af78226e82e3a4349efdde59ffa421ae88be67e18cef915e4023a595", size = 158363 }, + { url = "https://files.pythonhosted.org/packages/d1/4b/2eb84ae867539a80822e92f9be4a7200dffba609275faf99b24141839110/simplejson-3.20.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:15c7de4c88ab2fbcb8781a3b982ef883696736134e20b1210bca43fb42ff1acf", size = 148415 }, + { url = "https://files.pythonhosted.org/packages/e0/bd/400b0bd372a5666addf2540c7358bfc3841b9ce5cdbc5cc4ad2f61627ad8/simplejson-3.20.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:455a882ff3f97d810709f7b620007d4e0aca8da71d06fc5c18ba11daf1c4df49", size = 152213 }, + { url = "https://files.pythonhosted.org/packages/50/12/143f447bf6a827ee9472693768dc1a5eb96154f8feb140a88ce6973a3cfa/simplejson-3.20.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:fc0f523ce923e7f38eb67804bc80e0a028c76d7868500aa3f59225574b5d0453", size = 150048 }, + { url = "https://files.pythonhosted.org/packages/5e/ea/dd9b3e8e8ed710a66f24a22c16a907c9b539b6f5f45fd8586bd5c231444e/simplejson-3.20.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:76461ec929282dde4a08061071a47281ad939d0202dc4e63cdd135844e162fbc", size = 151668 }, + { url = "https://files.pythonhosted.org/packages/99/af/ee52a8045426a0c5b89d755a5a70cc821815ef3c333b56fbcad33c4435c0/simplejson-3.20.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:ab19c2da8c043607bde4d4ef3a6b633e668a7d2e3d56f40a476a74c5ea71949f", size = 158840 }, + { url = "https://files.pythonhosted.org/packages/68/db/ab32869acea6b5de7d75fa0dac07a112ded795d41eaa7e66c7813b17be95/simplejson-3.20.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b2578bedaedf6294415197b267d4ef678fea336dd78ee2a6d2f4b028e9d07be3", size = 154212 }, + { url = "https://files.pythonhosted.org/packages/fa/7a/e3132d454977d75a3bf9a6d541d730f76462ebf42a96fea2621498166f41/simplejson-3.20.1-cp312-cp312-win32.whl", hash = "sha256:339f407373325a36b7fd744b688ba5bae0666b5d340ec6d98aebc3014bf3d8ea", size = 74101 }, + { url = "https://files.pythonhosted.org/packages/bc/5d/4e243e937fa3560107c69f6f7c2eed8589163f5ed14324e864871daa2dd9/simplejson-3.20.1-cp312-cp312-win_amd64.whl", hash = "sha256:627d4486a1ea7edf1f66bb044ace1ce6b4c1698acd1b05353c97ba4864ea2e17", size = 75736 }, + { url = "https://files.pythonhosted.org/packages/c4/03/0f453a27877cb5a5fff16a975925f4119102cc8552f52536b9a98ef0431e/simplejson-3.20.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:71e849e7ceb2178344998cbe5ade101f1b329460243c79c27fbfc51c0447a7c3", size = 93109 }, + { url = "https://files.pythonhosted.org/packages/74/1f/a729f4026850cabeaff23e134646c3f455e86925d2533463420635ae54de/simplejson-3.20.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b63fdbab29dc3868d6f009a59797cefaba315fd43cd32ddd998ee1da28e50e29", size = 75475 }, + { url = "https://files.pythonhosted.org/packages/e2/14/50a2713fee8ff1f8d655b1a14f4a0f1c0c7246768a1b3b3d12964a4ed5aa/simplejson-3.20.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1190f9a3ce644fd50ec277ac4a98c0517f532cfebdcc4bd975c0979a9f05e1fb", size = 75112 }, + { url = "https://files.pythonhosted.org/packages/45/86/ea9835abb646755140e2d482edc9bc1e91997ed19a59fd77ae4c6a0facea/simplejson-3.20.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1336ba7bcb722ad487cd265701ff0583c0bb6de638364ca947bb84ecc0015d1", size = 150245 }, + { url = "https://files.pythonhosted.org/packages/12/b4/53084809faede45da829fe571c65fbda8479d2a5b9c633f46b74124d56f5/simplejson-3.20.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e975aac6a5acd8b510eba58d5591e10a03e3d16c1cf8a8624ca177491f7230f0", size = 158465 }, + { url = "https://files.pythonhosted.org/packages/a9/7d/d56579468d1660b3841e1f21c14490d103e33cf911886b22652d6e9683ec/simplejson-3.20.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a6dd11ee282937ad749da6f3b8d87952ad585b26e5edfa10da3ae2536c73078", size = 148514 }, + { url = "https://files.pythonhosted.org/packages/19/e3/874b1cca3d3897b486d3afdccc475eb3a09815bf1015b01cf7fcb52a55f0/simplejson-3.20.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab980fcc446ab87ea0879edad41a5c28f2d86020014eb035cf5161e8de4474c6", size = 152262 }, + { url = "https://files.pythonhosted.org/packages/32/84/f0fdb3625292d945c2bd13a814584603aebdb38cfbe5fe9be6b46fe598c4/simplejson-3.20.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f5aee2a4cb6b146bd17333ac623610f069f34e8f31d2f4f0c1a2186e50c594f0", size = 150164 }, + { url = "https://files.pythonhosted.org/packages/95/51/6d625247224f01eaaeabace9aec75ac5603a42f8ebcce02c486fbda8b428/simplejson-3.20.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:652d8eecbb9a3b6461b21ec7cf11fd0acbab144e45e600c817ecf18e4580b99e", size = 151795 }, + { url = "https://files.pythonhosted.org/packages/7f/d9/bb921df6b35be8412f519e58e86d1060fddf3ad401b783e4862e0a74c4c1/simplejson-3.20.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:8c09948f1a486a89251ee3a67c9f8c969b379f6ffff1a6064b41fea3bce0a112", size = 159027 }, + { url = "https://files.pythonhosted.org/packages/03/c5/5950605e4ad023a6621cf4c931b29fd3d2a9c1f36be937230bfc83d7271d/simplejson-3.20.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:cbbd7b215ad4fc6f058b5dd4c26ee5c59f72e031dfda3ac183d7968a99e4ca3a", size = 154380 }, + { url = "https://files.pythonhosted.org/packages/66/ad/b74149557c5ec1e4e4d55758bda426f5d2ec0123cd01a53ae63b8de51fa3/simplejson-3.20.1-cp313-cp313-win32.whl", hash = "sha256:ae81e482476eaa088ef9d0120ae5345de924f23962c0c1e20abbdff597631f87", size = 74102 }, + { url = "https://files.pythonhosted.org/packages/db/a9/25282fdd24493e1022f30b7f5cdf804255c007218b2bfaa655bd7ad34b2d/simplejson-3.20.1-cp313-cp313-win_amd64.whl", hash = "sha256:1b9fd15853b90aec3b1739f4471efbf1ac05066a2c7041bf8db821bb73cd2ddc", size = 75736 }, + { url = "https://files.pythonhosted.org/packages/4b/30/00f02a0a921556dd5a6db1ef2926a1bc7a8bbbfb1c49cfed68a275b8ab2b/simplejson-3.20.1-py3-none-any.whl", hash = "sha256:8a6c1bbac39fa4a79f83cbf1df6ccd8ff7069582a9fd8db1e52cea073bc2c697", size = 57121 }, +] + +[[package]] +name = "simplekv" +version = "0.14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/6f/a6cafd4e87757e316468bf56287806b8df8ad4505f6da449a507e8cbacee/simplekv-0.14.1.tar.gz", hash = "sha256:8953a36cb3741ea821c9de1962b5313bf6fe1b927f6ced2a55266eb8ce2cd0f6", size = 21996 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9d/95/c8b966592a69765928295e13cb4e83f66c7f4ec11c07a0d6f0bc360970ed/simplekv-0.14.1-py3-none-any.whl", hash = "sha256:fcee8d972d092de0dc83732084e389c9b95839503537ef85c1a2eeb07182f2f5", size = 31337 }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/44/7b/af302bebf22c749c56c9c3e8ae13190b5b5db37a33d9068652e8f73b7089/snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1", size = 86699 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a", size = 93002 }, +] + +[[package]] +name = "soupsieve" +version = "2.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/ce/fbaeed4f9fb8b2daa961f90591662df6a86c1abf25c548329a86920aedfb/soupsieve-2.6.tar.gz", hash = "sha256:e2e68417777af359ec65daac1057404a3c8a5455bb8abc36f1a9866ab1a51abb", size = 101569 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/c2/fe97d779f3ef3b15f05c94a2f1e3d21732574ed441687474db9d342a7315/soupsieve-2.6-py3-none-any.whl", hash = "sha256:e72c4ff06e4fb6e4b5a9f0f55fe6e81514581fca1515028625d0f299c602ccc9", size = 36186 }, +] + +[[package]] +name = "speaklater" +version = "1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/92/5ae1effe0ccb8561c034a0111d53c8788660ddb7ed4992f0da1bb5c525e5/speaklater-1.3.tar.gz", hash = "sha256:59fea336d0eed38c1f0bf3181ee1222d0ef45f3a9dd34ebe65e6bfffdd6a65a9", size = 3582 } + +[[package]] +name = "sphinx" +version = "7.3.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "alabaster" }, + { name = "babel" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "docutils" }, + { name = "imagesize" }, + { name = "jinja2" }, + { name = "packaging" }, + { name = "pygments" }, + { name = "requests" }, + { name = "snowballstemmer" }, + { name = "sphinxcontrib-applehelp" }, + { name = "sphinxcontrib-devhelp" }, + { name = "sphinxcontrib-htmlhelp" }, + { name = "sphinxcontrib-jsmath" }, + { name = "sphinxcontrib-qthelp" }, + { name = "sphinxcontrib-serializinghtml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/0a/b88033900b1582f5ed8f880263363daef968d1cd064175e32abfd9714410/sphinx-7.3.7.tar.gz", hash = "sha256:a4a7db75ed37531c05002d56ed6948d4c42f473a36f46e1382b0bd76ca9627bc", size = 7094808 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/fa/130c32ed94cf270e3d0b9ded16fb7b2c8fea86fa7263c29a696a30c1dde7/sphinx-7.3.7-py3-none-any.whl", hash = "sha256:413f75440be4cacf328f580b4274ada4565fb2187d696a84970c23f77b64d8c3", size = 3335650 }, +] + +[[package]] +name = "sphinx-autodoc-typehints" +version = "1.25.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/19/1131e37f815864efbdb6498cc41f5ce3da82b7e952456900968132c7dcba/sphinx_autodoc_typehints-1.25.3.tar.gz", hash = "sha256:70db10b391acf4e772019765991d2de0ff30ec0899b9ba137706dc0b3c4835e0", size = 37709 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/d3/8c375e2a6ce21c29021d413e5ebb4d285431acd209f82b89101f157d4b9b/sphinx_autodoc_typehints-1.25.3-py3-none-any.whl", hash = "sha256:d3da7fa9a9761eff6ff09f8b1956ae3090a2d4f4ad54aebcade8e458d6340835", size = 19239 }, +] + +[[package]] +name = "sphinx-basic-ng" +version = "1.0.0b2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/0b/a866924ded68efec7a1759587a4e478aec7559d8165fac8b2ad1c0e774d6/sphinx_basic_ng-1.0.0b2.tar.gz", hash = "sha256:9ec55a47c90c8c002b5960c57492ec3021f5193cb26cebc2dc4ea226848651c9", size = 20736 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/dd/018ce05c532a22007ac58d4f45232514cd9d6dd0ee1dc374e309db830983/sphinx_basic_ng-1.0.0b2-py3-none-any.whl", hash = "sha256:eb09aedbabfb650607e9b4b68c9d240b90b1e1be221d6ad71d61c52e29f7932b", size = 22496 }, +] + +[[package]] +name = "sphinx-copybutton" +version = "0.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/2b/a964715e7f5295f77509e59309959f4125122d648f86b4fe7d70ca1d882c/sphinx-copybutton-0.5.2.tar.gz", hash = "sha256:4cf17c82fb9646d1bc9ca92ac280813a3b605d8c421225fd9913154103ee1fbd", size = 23039 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/48/1ea60e74949eecb12cdd6ac43987f9fd331156388dcc2319b45e2ebb81bf/sphinx_copybutton-0.5.2-py3-none-any.whl", hash = "sha256:fb543fd386d917746c9a2c50360c7905b605726b9355cd26e9974857afeae06e", size = 13343 }, +] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/6e/b837e84a1a704953c62ef8776d45c3e8d759876b4a84fe14eba2859106fe/sphinxcontrib_applehelp-2.0.0.tar.gz", hash = "sha256:2f29ef331735ce958efa4734873f084941970894c6090408b079c61b2e1c06d1", size = 20053 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl", hash = "sha256:4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5", size = 119300 }, +] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/d2/5beee64d3e4e747f316bae86b55943f51e82bb86ecd325883ef65741e7da/sphinxcontrib_devhelp-2.0.0.tar.gz", hash = "sha256:411f5d96d445d1d73bb5d52133377b4248ec79db5c793ce7dbe59e074b4dd1ad", size = 12967 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl", hash = "sha256:aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2", size = 82530 }, +] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/93/983afd9aa001e5201eab16b5a444ed5b9b0a7a010541e0ddfbbfd0b2470c/sphinxcontrib_htmlhelp-2.1.0.tar.gz", hash = "sha256:c9e2916ace8aad64cc13a0d233ee22317f2b9025b9cf3295249fa985cc7082e9", size = 22617 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl", hash = "sha256:166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8", size = 98705 }, +] + +[[package]] +name = "sphinxcontrib-issuetracker" +version = "0.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, + { name = "sphinx" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/dc/7802f5cb801e9af00372dd95dc58de6f3b3821082b33acae1b159789f939/sphinxcontrib-issuetracker-0.11.tar.gz", hash = "sha256:843753d8b5e989116378ab45ecccb368fb78dc56eaa1554ed25e4fbf22745f4e", size = 30351 } + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/e8/9ed3830aeed71f17c026a07a5097edcf44b692850ef215b161b8ad875729/sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8", size = 5787 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178", size = 5071 }, +] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/68/bc/9104308fc285eb3e0b31b67688235db556cd5b0ef31d96f30e45f2e51cae/sphinxcontrib_qthelp-2.0.0.tar.gz", hash = "sha256:4fe7d0ac8fc171045be623aba3e2a8f613f8682731f9153bb2e40ece16b9bbab", size = 17165 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl", hash = "sha256:b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb", size = 88743 }, +] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3b/44/6716b257b0aa6bfd51a1b31665d1c205fb12cb5ad56de752dfa15657de2f/sphinxcontrib_serializinghtml-2.0.0.tar.gz", hash = "sha256:e9d912827f872c029017a53f0ef2180b327c3f7fd23c87229f7a8e8b70031d4d", size = 16080 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl", hash = "sha256:6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331", size = 92072 }, +] + +[[package]] +name = "spinners" +version = "0.0.24" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/91/bb331f0a43e04d950a710f402a0986a54147a35818df0e1658551c8d12e1/spinners-0.0.24.tar.gz", hash = "sha256:1eb6aeb4781d72ab42ed8a01dcf20f3002bf50740d7154d12fb8c9769bf9e27f", size = 5308 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/8e/3310207a68118000ca27ac878b8386123628b335ecb3d4bec4743357f0d1/spinners-0.0.24-py3-none-any.whl", hash = "sha256:2fa30d0b72c9650ad12bbe031c9943b8d441e41b4f5602b0ec977a19f3290e98", size = 5499 }, +] + +[[package]] +name = "sqlalchemy" +version = "1.4.54" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ce/af/20290b55d469e873cba9d41c0206ab5461ff49d759989b3fe65010f9d265/sqlalchemy-1.4.54.tar.gz", hash = "sha256:4470fbed088c35dc20b78a39aaf4ae54fe81790c783b3264872a0224f437c31a", size = 8470350 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/1b/aa9b99be95d1615f058b5827447c18505b7b3f1dfcbd6ce1b331c2107152/SQLAlchemy-1.4.54-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3f01c2629a7d6b30d8afe0326b8c649b74825a0e1ebdcb01e8ffd1c920deb07d", size = 1589983 }, + { url = "https://files.pythonhosted.org/packages/59/47/cb0fc64e5344f0a3d02216796c342525ab283f8f052d1c31a1d487d08aa0/SQLAlchemy-1.4.54-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c24dd161c06992ed16c5e528a75878edbaeced5660c3db88c820f1f0d3fe1f4", size = 1630158 }, + { url = "https://files.pythonhosted.org/packages/c0/8b/f45dd378f6c97e8ff9332ff3d03ecb0b8c491be5bb7a698783b5a2f358ec/SQLAlchemy-1.4.54-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5e0d47d619c739bdc636bbe007da4519fc953393304a5943e0b5aec96c9877c", size = 1629232 }, + { url = "https://files.pythonhosted.org/packages/0d/3c/884fe389f5bec86a310b81e79abaa1e26e5d78dc10a84d544a6822833e47/SQLAlchemy-1.4.54-cp312-cp312-win32.whl", hash = "sha256:12bc0141b245918b80d9d17eca94663dbd3f5266ac77a0be60750f36102bbb0f", size = 1592027 }, + { url = "https://files.pythonhosted.org/packages/01/c3/c690d037be57efd3a69cde16a2ef1bd2a905dafe869434d33836de0983d0/SQLAlchemy-1.4.54-cp312-cp312-win_amd64.whl", hash = "sha256:f941aaf15f47f316123e1933f9ea91a6efda73a161a6ab6046d1cde37be62c88", size = 1593827 }, +] + +[package.optional-dependencies] +asyncio = [ + { name = "greenlet" }, +] + +[[package]] +name = "sqlalchemy-continuum" +version = "1.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sqlalchemy" }, + { name = "sqlalchemy-utils" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c3/a6/e1ee464ed41b45f7daf7117812483731a85059892bd79453f950fb7cb5dd/SQLAlchemy-Continuum-1.4.1.tar.gz", hash = "sha256:e01646cdfbfd6b31a21b0aeba6bbff661258d5be8477c7500cab3a1c74848e6e", size = 81692 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/11/630da836c504151fe3d12f68613f3d35354d1ed3796fc5b0e8fc4a42a548/SQLAlchemy_Continuum-1.4.1-py3-none-any.whl", hash = "sha256:f884ab36b1be724ecba867f21557f8f4658c1fb9dee6df8fe9a39b63d485bdd5", size = 44799 }, +] + +[[package]] +name = "sqlalchemy-utils" +version = "0.38.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sqlalchemy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b4/43/b8f78428a33410ea3d12cafe6bc3fb359fbebaa2a90c5cc90c766956fa87/SQLAlchemy-Utils-0.38.3.tar.gz", hash = "sha256:9f9afba607a40455cf703adfa9846584bf26168a0c5a60a70063b70d65051f4d", size = 137517 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/90/6ff1829b55cf752994be76bdf5f718db053dcb8d738f9df5b622207a4ab8/SQLAlchemy_Utils-0.38.3-py3-none-any.whl", hash = "sha256:5c13b5d08adfaa85f3d4e8ec09a75136216fad41346980d02974a70a77988bf9", size = 100264 }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, +] + +[[package]] +name = "termcolor" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/37/72/88311445fd44c455c7d553e61f95412cf89054308a1aa2434ab835075fc5/termcolor-2.5.0.tar.gz", hash = "sha256:998d8d27da6d48442e8e1f016119076b690d962507531df4890fcd2db2ef8a6f", size = 13057 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7f/be/df630c387a0a054815d60be6a97eb4e8f17385d5d6fe660e1c02750062b4/termcolor-2.5.0-py3-none-any.whl", hash = "sha256:37b17b5fc1e604945c2642c872a3764b5d547a48009871aea3edd3afa180afb8", size = 7755 }, +] + +[[package]] +name = "text-unidecode" +version = "1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154 }, +] + +[[package]] +name = "timefhuman" +version = "0.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lark" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6c/6a/ae391cd28fc8d9ebf86c9dc7f6372447f909726ea009cd186e47dae920de/timefhuman-0.1.0.tar.gz", hash = "sha256:b2236f20c731a12d80ff9217c1bc066ed421f9765baf50fe1d3acd367dc3b73e", size = 16107 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/2b/69d3a2e5949041663f17e8ca36986a7b062ddbe0a7eedfda306082ba92a8/timefhuman-0.1.0-py3-none-any.whl", hash = "sha256:04bb6fe4d041c92ea28b1ebc946d9f1bc22c057c27df26f2d8ee7568a67b88e2", size = 13237 }, +] + +[[package]] +name = "tinycss2" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, +] + +[[package]] +name = "titlecase" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/63/17/04d2d3e30e2bc5a3eefa1060b08e3fb628510440f938eaecabbe08976a26/titlecase-2.4.1.tar.gz", hash = "sha256:7d83a277ccbbda11a2944e78a63e5ccaf3d32f828c594312e4862f9a07f635f5", size = 14434 } + +[[package]] +name = "toml" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588 }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, +] + +[[package]] +name = "tornado" +version = "6.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/59/45/a0daf161f7d6f36c3ea5fc0c2de619746cc3dd4c76402e9db545bd920f63/tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b", size = 501135 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/7e/71f604d8cea1b58f82ba3590290b66da1e72d840aeb37e0d5f7291bd30db/tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1", size = 436299 }, + { url = "https://files.pythonhosted.org/packages/96/44/87543a3b99016d0bf54fdaab30d24bf0af2e848f1d13d34a3a5380aabe16/tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803", size = 434253 }, + { url = "https://files.pythonhosted.org/packages/cb/fb/fdf679b4ce51bcb7210801ef4f11fdac96e9885daa402861751353beea6e/tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec", size = 437602 }, + { url = "https://files.pythonhosted.org/packages/4f/3b/e31aeffffc22b475a64dbeb273026a21b5b566f74dee48742817626c47dc/tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946", size = 436972 }, + { url = "https://files.pythonhosted.org/packages/22/55/b78a464de78051a30599ceb6983b01d8f732e6f69bf37b4ed07f642ac0fc/tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf", size = 437173 }, + { url = "https://files.pythonhosted.org/packages/79/5e/be4fb0d1684eb822c9a62fb18a3e44a06188f78aa466b2ad991d2ee31104/tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634", size = 437892 }, + { url = "https://files.pythonhosted.org/packages/f5/33/4f91fdd94ea36e1d796147003b490fe60a0215ac5737b6f9c65e160d4fe0/tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73", size = 437334 }, + { url = "https://files.pythonhosted.org/packages/2b/ae/c1b22d4524b0e10da2f29a176fb2890386f7bd1f63aacf186444873a88a0/tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c", size = 437261 }, + { url = "https://files.pythonhosted.org/packages/b5/25/36dbd49ab6d179bcfc4c6c093a51795a4f3bed380543a8242ac3517a1751/tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482", size = 438463 }, + { url = "https://files.pythonhosted.org/packages/61/cc/58b1adeb1bb46228442081e746fcdbc4540905c87e8add7c277540934edb/tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38", size = 438907 }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, +] + +[[package]] +name = "types-beautifulsoup4" +version = "4.12.0.20250204" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "types-html5lib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/11/6c/00fd71754ac3babe121c73b52e0de7ec05acd627edcb7ee652223c084d69/types_beautifulsoup4-4.12.0.20250204.tar.gz", hash = "sha256:f083d8edcbd01279f8c3995b56cfff2d01f1bb894c3b502ba118d36fbbc495bf", size = 16641 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/ec/9097e9f7f5901e4d7834c7e0bc8f775f9ffa448ae31471457a1ebafeb4c5/types_beautifulsoup4-4.12.0.20250204-py3-none-any.whl", hash = "sha256:57ce9e75717b63c390fd789c787d267a67eb01fa6d800a03b9bdde2e877ed1eb", size = 17061 }, +] + +[[package]] +name = "types-bleach" +version = "6.2.0.20241123" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "types-html5lib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d2/d0/a872438603afc9e056670285d964551de9174be74f9d34877c569842a67f/types_bleach-6.2.0.20241123.tar.gz", hash = "sha256:dac5fe9015173514da3ac810c1a935619a3ccbcc5d66c4cbf4707eac00539057", size = 11497 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/4c/7699723b86ed7ce9a2a21fb437be8ae9658e9faecaae5cd6d02632bc77f4/types_bleach-6.2.0.20241123-py3-none-any.whl", hash = "sha256:c6e58b3646665ca7c6b29890375390f4569e84f0cf5c171e0fe1ddb71a7be86a", size = 11902 }, +] + +[[package]] +name = "types-dateparser" +version = "1.2.0.20250208" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/9e/06305e20da13e1014398dac11c346089294f933a1e9e18c80b752b97a795/types_dateparser-1.2.0.20250208.tar.gz", hash = "sha256:11ad024b43a655bcab564f21b172a117e6a09d0fc2e8a8131f52e5b68a59a2a6", size = 15078 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/c3/7bbc3d907eaa5cf604207f19b60be5773e12065c621e1bb61f7f9f5159ec/types_dateparser-1.2.0.20250208-py3-none-any.whl", hash = "sha256:bfe9d2f36fca22900797bfdd240e3175d885b9541237447ddd7161ea1be2ff77", size = 21033 }, +] + +[[package]] +name = "types-html5lib" +version = "1.1.11.20241018" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/9d/f6fbcc8246f5e46845b4f989c4e17e6fb3ce572f7065b185e515bf8a3be7/types-html5lib-1.1.11.20241018.tar.gz", hash = "sha256:98042555ff78d9e3a51c77c918b1041acbb7eb6c405408d8a9e150ff5beccafa", size = 11370 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/7c/f862b1dc31268ef10fe95b43dcdf216ba21a592fafa2d124445cd6b92e93/types_html5lib-1.1.11.20241018-py3-none-any.whl", hash = "sha256:3f1e064d9ed2c289001ae6392c84c93833abb0816165c6ff0abfc304a779f403", size = 17292 }, +] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20241206" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/60/47d92293d9bc521cd2301e423a358abfac0ad409b3a1606d8fbae1321961/types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb", size = 13802 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53", size = 14384 }, +] + +[[package]] +name = "types-pyyaml" +version = "6.0.12.20241230" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/f9/4d566925bcf9396136c0a2e5dc7e230ff08d86fa011a69888dd184469d80/types_pyyaml-6.0.12.20241230.tar.gz", hash = "sha256:7f07622dbd34bb9c8b264fe860a17e0efcad00d50b5f27e93984909d9363498c", size = 17078 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e8/c1/48474fbead512b70ccdb4f81ba5eb4a58f69d100ba19f17c92c0c4f50ae6/types_PyYAML-6.0.12.20241230-py3-none-any.whl", hash = "sha256:fa4d32565219b68e6dee5f67534c722e53c00d1cfc09c435ef04d7353e1e96e6", size = 20029 }, +] + +[[package]] +name = "types-requests" +version = "2.31.0.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "types-urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f9/b8/c1e8d39996b4929b918aba10dba5de07a8b3f4c8487bb61bb79882544e69/types-requests-2.31.0.6.tar.gz", hash = "sha256:cd74ce3b53c461f1228a9b783929ac73a666658f223e28ed29753771477b3bd0", size = 15535 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/a1/6f8dc74d9069e790d604ddae70cb46dcbac668f1bb08136e7b0f2f5cd3bf/types_requests-2.31.0.6-py3-none-any.whl", hash = "sha256:a2db9cb228a81da8348b49ad6db3f5519452dd20a9c1e1a868c83c5fe88fd1a9", size = 14516 }, +] + +[[package]] +name = "types-urllib3" +version = "1.26.25.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/73/de/b9d7a68ad39092368fb21dd6194b362b98a1daeea5dcfef5e1adb5031c7e/types-urllib3-1.26.25.14.tar.gz", hash = "sha256:229b7f577c951b8c1b92c1bc2b2fdb0b49847bd2af6d1cc2a2e3dd340f3bda8f", size = 11239 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/7b/3fc711b2efea5e85a7a0bbfe269ea944aa767bbba5ec52f9ee45d362ccf3/types_urllib3-1.26.25.14-py3-none-any.whl", hash = "sha256:9683bbb7fb72e32bfe9d2be6e04875fbe1b3eeec3cbb4ea231435aa7fd6b4f0e", size = 15377 }, +] + +[[package]] +name = "types-xmltodict" +version = "0.13.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4f/bc/191d95f4e18ee8ffe626046574805fad7734827146e6ad39d56149fb1f62/types-xmltodict-0.13.0.3.tar.gz", hash = "sha256:8884534bab0364c4b22d5973f3c8153ff40d413a801d9e70eb893e676909f1fc", size = 2689 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/31/8046c84acfc397e60afe39ac5cdaf1ba5cf95eef11a1e995c3e951f08ba5/types_xmltodict-0.13.0.3-py3-none-any.whl", hash = "sha256:cb251c59e838986d8402b10d804225ade9fd6c9f66d01dc45cd6cfdf43640128", size = 2503 }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, +] + +[[package]] +name = "tzdata" +version = "2025.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/0f/fa4723f22942480be4ca9527bbde8d43f6c3f2fe8412f00e7f5f6746bc8b/tzdata-2025.1.tar.gz", hash = "sha256:24894909e88cdb28bd1636c6887801df64cb485bd593f2fd83ef29075a81d694", size = 194950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/dd/84f10e23edd882c6f968c21c2434fe67bd4a528967067515feca9e611e5e/tzdata-2025.1-py2.py3-none-any.whl", hash = "sha256:7e127113816800496f027041c570f50bcd464a020098a3b6b199517772303639", size = 346762 }, +] + +[[package]] +name = "tzlocal" +version = "5.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/2e/c14812d3d4d9cd1773c6be938f89e5735a1f11a9f184ac3639b93cef35d5/tzlocal-5.3.1.tar.gz", hash = "sha256:cceffc7edecefea1f595541dbd6e990cb1ea3d19bf01b2809f362a03dd7921fd", size = 30761 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/14/e2a54fabd4f08cd7af1c07030603c3356b74da07f7cc056e600436edfa17/tzlocal-5.3.1-py3-none-any.whl", hash = "sha256:eb1a66c3ef5847adf7a834f1be0800581b683b5608e74f86ecbcef8ab91bb85d", size = 18026 }, +] + +[[package]] +name = "ua-parser" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ua-parser-builtins" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/0e/ed98be735bc89d5040e0c60f5620d0b8c04e9e7da99ed1459e8050e90a77/ua_parser-1.0.1.tar.gz", hash = "sha256:f9d92bf19d4329019cef91707aecc23c6d65143ad7e29a233f0580fb0d15547d", size = 728106 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/37/be6dfbfa45719aa82c008fb4772cfe5c46db765a2ca4b6f524a1fdfee4d7/ua_parser-1.0.1-py3-none-any.whl", hash = "sha256:b059f2cb0935addea7e551251cbbf42e9a8872f86134163bc1a4f79e0945ffea", size = 31410 }, +] + +[[package]] +name = "ua-parser-builtins" +version = "0.18.0.post1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6f/d3/13adff37f15489c784cc7669c35a6c3bf94b87540229eedf52ef2a1d0175/ua_parser_builtins-0.18.0.post1-py3-none-any.whl", hash = "sha256:eb4f93504040c3a990a6b0742a2afd540d87d7f9f05fd66e94c101db1564674d", size = 86077 }, +] + +[[package]] +name = "unidecode" +version = "1.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f7/89/19151076a006b9ac0dd37b1354e031f5297891ee507eb624755e58e10d3e/Unidecode-1.3.8.tar.gz", hash = "sha256:cfdb349d46ed3873ece4586b96aa75258726e2fa8ec21d6f00a591d98806c2f4", size = 192701 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/b7/6ec57841fb67c98f52fc8e4a2d96df60059637cba077edc569a302a8ffc7/Unidecode-1.3.8-py3-none-any.whl", hash = "sha256:d130a61ce6696f8148a3bd8fe779c99adeb4b870584eeb9526584e9aa091fd39", size = 235494 }, +] + +[[package]] +name = "uritemplate" +version = "4.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d2/5a/4742fdba39cd02a56226815abfa72fe0aa81c33bed16ed045647d6000eba/uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0", size = 273898 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c0/7461b49cd25aeece13766f02ee576d1db528f1c37ce69aee300e075b485b/uritemplate-4.1.1-py2.py3-none-any.whl", hash = "sha256:830c08b8d99bdd312ea4ead05994a38e8936266f84b9a7878232db50b044e02e", size = 10356 }, +] + +[[package]] +name = "uritools" +version = "4.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/43/4182fb2a03145e6d38698e38b49114ce59bc8c79063452eb585a58f8ce78/uritools-4.0.3.tar.gz", hash = "sha256:ee06a182a9c849464ce9d5fa917539aacc8edd2a4924d1b7aabeeecabcae3bc2", size = 24184 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/17/5a4510d9ca9cc8be217ce359eb54e693dca81cf4d442308b282d5131b17d/uritools-4.0.3-py3-none-any.whl", hash = "sha256:bae297d090e69a0451130ffba6f2f1c9477244aa0a5543d66aed2d9f77d0dd9c", size = 10304 }, +] + +[[package]] +name = "urllib3" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/63/e53da845320b757bf29ef6a9062f5c669fe997973f966045cb019c3f4b66/urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d", size = 307268 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/19/4ec628951a74043532ca2cf5d97b7b14863931476d117c471e8e2b1eb39f/urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df", size = 128369 }, +] + +[[package]] +name = "uwsgi" +version = "2.0.28" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/c2/d58480aadc9a1f420dd96fc43cf0dcd8cb5ededb95cab53743529c23b6cd/uwsgi-2.0.28.tar.gz", hash = "sha256:79ca1891ef2df14508ab0471ee8c0eb94bd2d51d03f32f90c4bbe557ab1e99d0", size = 816212 } + +[[package]] +name = "validators" +version = "0.34.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/64/07/91582d69320f6f6daaf2d8072608a4ad8884683d4840e7e4f3a9dbdcc639/validators-0.34.0.tar.gz", hash = "sha256:647fe407b45af9a74d245b943b18e6a816acf4926974278f6dd617778e1e781f", size = 70955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/78/36828a4d857b25896f9774c875714ba4e9b3bc8a92d2debe3f4df3a83d4f/validators-0.34.0-py3-none-any.whl", hash = "sha256:c804b476e3e6d3786fa07a30073a4ef694e617805eb1946ceee3fe5a9b8b1321", size = 43536 }, +] + +[[package]] +name = "vine" +version = "5.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/e4/d07b5f29d283596b9727dd5275ccbceb63c44a1a82aa9e4bfd20426762ac/vine-5.1.0.tar.gz", hash = "sha256:8b62e981d35c41049211cf62a0a1242d8c1ee9bd15bb196ce38aefd6799e61e0", size = 48980 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/ff/7c0c86c43b3cbb927e0ccc0255cb4057ceba4799cd44ae95174ce8e8b5b2/vine-5.1.0-py3-none-any.whl", hash = "sha256:40fdf3c48b2cfe1c38a49e9ae2da6fda88e4794c810050a728bd7413811fb1dc", size = 9636 }, +] + +[[package]] +name = "virtualenv" +version = "20.29.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/9c/57d19fa093bcf5ac61a48087dd44d00655f85421d1aa9722f8befbf3f40a/virtualenv-20.29.3.tar.gz", hash = "sha256:95e39403fcf3940ac45bc717597dba16110b74506131845d9b687d5e73d947ac", size = 4320280 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/eb/c6db6e3001d58c6a9e67c74bb7b4206767caa3ccc28c6b9eaf4c23fb4e34/virtualenv-20.29.3-py3-none-any.whl", hash = "sha256:3e3d00f5807e83b234dfb6122bf37cfadf4be216c53a49ac059d02414f819170", size = 4301458 }, +] + +[[package]] +name = "wand" +version = "0.6.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/0b/005ab483df0bf48d65fe26cc1036ce222521ece3a84e55b501a4f966746c/Wand-0.6.13.tar.gz", hash = "sha256:f5013484eaf7a20eb22d1821aaefe60b50cc329722372b5f8565d46d4aaafcca", size = 11883700 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/d5/1bdd7c9662d5e9078e25ba0eb69bdb122859295746d40ab8dfef3a7b4d42/Wand-0.6.13-py2.py3-none-any.whl", hash = "sha256:e5dda0ac2204a40c29ef5c4cb310770c95d3d05c37b1379e69c94ea79d7d19c0", size = 143789 }, +] + +[[package]] +name = "watchdog" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/6f/0396d373e039b89c60e23a1a9025edc6dd203121fe0af7d1427e85d5ec98/watchdog-2.2.1.tar.gz", hash = "sha256:cdcc23c9528601a8a293eb4369cbd14f6b4f34f07ae8769421252e9c22718b6f", size = 119871 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/d2/351134b5ff88b4e1a6b578cd4a83a8fe2abd4599190560d36da11c1127d4/watchdog-2.2.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:978a1aed55de0b807913b7482d09943b23a2d634040b112bdf31811a422f6344", size = 78974 }, + { url = "https://files.pythonhosted.org/packages/5d/c2/cabcca89b050ee704785365a30586e07de3fe101cba6276ca3aba145e0eb/watchdog-2.2.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:8c28c23972ec9c524967895ccb1954bc6f6d4a557d36e681a36e84368660c4ce", size = 78974 }, + { url = "https://files.pythonhosted.org/packages/cb/3f/e9b10c8693d2e3a4d94a6ed7ae42391cf169d23523f9165b94151f321d88/watchdog-2.2.1-py3-none-manylinux2014_i686.whl", hash = "sha256:c27d8c1535fd4474e40a4b5e01f4ba6720bac58e6751c667895cbc5c8a7af33c", size = 78973 }, + { url = "https://files.pythonhosted.org/packages/2c/9c/bd6427901e99cd659f4e40092cee2fd668e1d367c5b23059f7128f90fa9c/watchdog-2.2.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d6b87477752bd86ac5392ecb9eeed92b416898c30bd40c7e2dd03c3146105646", size = 78972 }, + { url = "https://files.pythonhosted.org/packages/23/7a/436bca74f15d70c16f9db13cbf449f41af65b59e9897b6ffb453c4a91db2/watchdog-2.2.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:cece1aa596027ff56369f0b50a9de209920e1df9ac6d02c7f9e5d8162eb4f02b", size = 78974 }, + { url = "https://files.pythonhosted.org/packages/77/d0/455f2942c23283a0a9e759f289fabd33dc091d8c31bf507ba6cbfc77b266/watchdog-2.2.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:8b5cde14e5c72b2df5d074774bdff69e9b55da77e102a91f36ef26ca35f9819c", size = 78973 }, + { url = "https://files.pythonhosted.org/packages/6f/94/b777029fdc7b1353e24ddc9f9f9bc0fe7788e684d036db20ded1a1b07aa6/watchdog-2.2.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:e038be858425c4f621900b8ff1a3a1330d9edcfeaa1c0468aeb7e330fb87693e", size = 78975 }, + { url = "https://files.pythonhosted.org/packages/97/98/706978058d61948868d42a42135b5a8caaecf40513711fa6a7734db8d60f/watchdog-2.2.1-py3-none-win32.whl", hash = "sha256:bc43c1b24d2f86b6e1cc15f68635a959388219426109233e606517ff7d0a5a73", size = 78959 }, + { url = "https://files.pythonhosted.org/packages/6d/7f/8deebfbec704ab40e2fe9064c1b157a9a7cd7061f64f7164fe5f902ce0fc/watchdog-2.2.1-py3-none-win_amd64.whl", hash = "sha256:17f1708f7410af92ddf591e94ae71a27a13974559e72f7e9fde3ec174b26ba2e", size = 78963 }, + { url = "https://files.pythonhosted.org/packages/56/3e/2e21594c93a4dd8c8ffc7ea4276adab7cb027f836e8bbf293bec640020e0/watchdog-2.2.1-py3-none-win_ia64.whl", hash = "sha256:195ab1d9d611a4c1e5311cbf42273bc541e18ea8c32712f2fb703cfc6ff006f9", size = 78962 }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, +] + +[[package]] +name = "webargs" +version = "5.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "marshmallow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/46/72d3c7e0acbdb9c79caf7e03835cd7f77163026811855b59a1eaf6c0c2e5/webargs-5.5.3.tar.gz", hash = "sha256:871642a2e0c62f21d5b78f357750ac7a87e6bc734c972f633aa5fb6204fbf29a", size = 32124 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/a8/4a3ea98ab1d439ad2fdea937d08390e6d69b5f9220642b69e031755edf33/webargs-5.5.3-py3-none-any.whl", hash = "sha256:4f04918864c7602886335d8099f9b8960ee698b6b914f022736ed50be6b71235", size = 29265 }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, +] + +[[package]] +name = "werkzeug" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/02/3c/baaebf3235c87d61d6593467056d5a8fba7c75ac838b8d100a5e64eba7a0/Werkzeug-2.2.3.tar.gz", hash = "sha256:2e1ccc9417d4da358b9de6f174e3ac094391ea1d4fbef2d667865d819dfd0afe", size = 845884 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f6/f8/9da63c1617ae2a1dec2fbf6412f3a0cfe9d4ce029eccbda6e1e4258ca45f/Werkzeug-2.2.3-py3-none-any.whl", hash = "sha256:56433961bc1f12533306c624f3be5e744389ac61d722175d543e1751285da612", size = 233551 }, +] + +[[package]] +name = "wrapt" +version = "1.17.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, + { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800 }, + { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824 }, + { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920 }, + { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690 }, + { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861 }, + { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174 }, + { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721 }, + { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763 }, + { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585 }, + { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676 }, + { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871 }, + { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312 }, + { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062 }, + { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155 }, + { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471 }, + { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208 }, + { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339 }, + { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232 }, + { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476 }, + { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377 }, + { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986 }, + { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750 }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, +] + +[[package]] +name = "wtforms" +version = "3.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/e4/633d080897e769ed5712dcfad626e55dbd6cf45db0ff4d9884315c6a82da/wtforms-3.2.1.tar.gz", hash = "sha256:df3e6b70f3192e92623128123ec8dca3067df9cfadd43d59681e210cfb8d4682", size = 137801 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/c9/2088fb5645cd289c99ebe0d4cdcc723922a1d8e1beaefb0f6f76dff9b21c/wtforms-3.2.1-py3-none-any.whl", hash = "sha256:583bad77ba1dd7286463f21e11aa3043ca4869d03575921d1a1698d0715e0fd4", size = 152454 }, +] + +[[package]] +name = "wtforms-alchemy" +version = "0.18.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sqlalchemy" }, + { name = "sqlalchemy-utils" }, + { name = "wtforms" }, + { name = "wtforms-components" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/c7/92f87e4e911ff003c2bea2b6563bc79ebff86071657abaca3bbea7aa5bec/WTForms-Alchemy-0.18.0.tar.gz", hash = "sha256:7748494056bdd96a7566186b8f422180465c337b2e892ad8e82a063cd6c76ca7", size = 53368 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/da/9f0169f1877f3a2aff9a233104b8ddaec6f2e3cdc2d3dda19c9eb05078ed/WTForms_Alchemy-0.18.0-py3-none-any.whl", hash = "sha256:c14cec7f76e27351a5777182ff39fcba64b7c46a561401835426605e6c83f216", size = 18359 }, +] + +[[package]] +name = "wtforms-components" +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "intervals" }, + { name = "markupsafe" }, + { name = "validators" }, + { name = "wtforms" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/2f/9e835c1ec678dcf4c450aabbeb28bc5681a3eab6e1eddcea209aa7970661/wtforms_components-0.11.0.tar.gz", hash = "sha256:ca94d60a6362c0e4b49d3d09d1eb1ddf5b26c99105a57397af313655f4447f7a", size = 25549 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/1d/f8e8a73257e717e4070b5130105a328b1bc2902bcaca8ff64a1b60ce7380/WTForms_Components-0.11.0-py2.py3-none-any.whl", hash = "sha256:605762c32588a915b6411628d082799c6c741134fb961244a9bd8ed1686aef74", size = 14044 }, +] + +[[package]] +name = "xmlsec" +version = "1.3.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/5b/244459b51dfe91211c1d9ec68fb5307dfc51e014698f52de575d25f753e0/xmlsec-1.3.14.tar.gz", hash = "sha256:934f804f2f895bcdb86f1eaee236b661013560ee69ec108d29cdd6e5f292a2d9", size = 68854 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/66/cb02e33c72fe7279016d60802e1e1b6b007a8b056ca34b990fca30356921/xmlsec-1.3.14-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1eb3dcf244a52f796377112d8f238dbb522eb87facffb498425dc8582a84a6bf", size = 3299742 }, + { url = "https://files.pythonhosted.org/packages/60/f2/a7489f3bd3bb7c2bbebe100a72e9e10cb645aac5ef160a7ed01e9b7817aa/xmlsec-1.3.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:330147ce59fbe56a9be5b2085d739c55a569f112576b3f1b33681f87416eaf33", size = 3675677 }, + { url = "https://files.pythonhosted.org/packages/15/1a/4703acc7dea24146db06cd4f93c4e9d6a148ff10f5b21a7eddca36fc4da4/xmlsec-1.3.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed4034939d8566ccdcd3b4e4f23c63fd807fb8763ae5668d59a19e11640a8242", size = 4201542 }, + { url = "https://files.pythonhosted.org/packages/c4/b6/1e5ee93e0150721d4c832860c321f0edc3ed753f4a0f376f48cce41bf697/xmlsec-1.3.14-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a98eadfcb0c3b23ccceb7a2f245811f8d784bd287640dcfe696a26b9db1e2fc0", size = 3616672 }, + { url = "https://files.pythonhosted.org/packages/6e/43/e83346261f25ee1f9eb0b6719bb77d19dff194333a02c0747dd1d360d520/xmlsec-1.3.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86ff7b2711557c1087b72b0a1a88d82eafbf2a6d38b97309a6f7101d4a7041c3", size = 3921961 }, + { url = "https://files.pythonhosted.org/packages/d9/d2/228f5e7edf8cf2affb76c22cd77a1adf423a8ce1b73c727a32d6939dcb18/xmlsec-1.3.14-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:774d5d1e45f07f953c1cc14fd055c1063f0725f7248b6b0e681f59fd8638934d", size = 4263947 }, + { url = "https://files.pythonhosted.org/packages/dc/d5/393ab85efbf633ea0d10e21a8dbb0a83d5b6ba66a16ce1fb987b90262335/xmlsec-1.3.14-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bd10ca3201f164482775a7ce61bf7ee9aade2e7d032046044dd0f6f52c91d79d", size = 4010992 }, + { url = "https://files.pythonhosted.org/packages/d1/70/d74de2e26fb9c92220411d44aa179826d525491c033e3828650ad3fafaaf/xmlsec-1.3.14-cp312-cp312-win32.whl", hash = "sha256:19c86bab1498e4c2e56d8e2c878f461ccb6e56b67fd7522b0c8fda46d8910781", size = 2146077 }, + { url = "https://files.pythonhosted.org/packages/e3/3f/75e69fa9d2084524ca4e796442d8058a78d78c64c1e8229d552c031a23b4/xmlsec-1.3.14-cp312-cp312-win_amd64.whl", hash = "sha256:d0762f4232bce2c7f6c0af329db8b821b4460bbe123a2528fb5677d03db7a4b5", size = 2441942 }, +] + +[[package]] +name = "xmltodict" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/40/0d783e14112e064127063fbf5d1fe1351723e5dfe9d6daad346a305f6c49/xmltodict-0.12.0.tar.gz", hash = "sha256:50d8c638ed7ecb88d90561beedbf720c9b4e851a9fa6c47ebd64e99d166d8a21", size = 18481 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/fd/30d5c1d3ac29ce229f6bdc40bbc20b28f716e8b363140c26eff19122d8a5/xmltodict-0.12.0-py2.py3-none-any.whl", hash = "sha256:8bbcb45cc982f48b2ca8fe7e7827c5d792f217ecf1792626f808bf41c3b86051", size = 9170 }, +] + +[[package]] +name = "yarl" +version = "1.18.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/9d/4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918/yarl-1.18.3.tar.gz", hash = "sha256:ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1", size = 181062 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/85/bd2e2729752ff4c77338e0102914897512e92496375e079ce0150a6dc306/yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50", size = 142644 }, + { url = "https://files.pythonhosted.org/packages/ff/74/1178322cc0f10288d7eefa6e4a85d8d2e28187ccab13d5b844e8b5d7c88d/yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576", size = 94962 }, + { url = "https://files.pythonhosted.org/packages/be/75/79c6acc0261e2c2ae8a1c41cf12265e91628c8c58ae91f5ff59e29c0787f/yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640", size = 92795 }, + { url = "https://files.pythonhosted.org/packages/6b/32/927b2d67a412c31199e83fefdce6e645247b4fb164aa1ecb35a0f9eb2058/yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2", size = 332368 }, + { url = "https://files.pythonhosted.org/packages/19/e5/859fca07169d6eceeaa4fde1997c91d8abde4e9a7c018e371640c2da2b71/yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75", size = 342314 }, + { url = "https://files.pythonhosted.org/packages/08/75/76b63ccd91c9e03ab213ef27ae6add2e3400e77e5cdddf8ed2dbc36e3f21/yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512", size = 341987 }, + { url = "https://files.pythonhosted.org/packages/1a/e1/a097d5755d3ea8479a42856f51d97eeff7a3a7160593332d98f2709b3580/yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba", size = 336914 }, + { url = "https://files.pythonhosted.org/packages/0b/42/e1b4d0e396b7987feceebe565286c27bc085bf07d61a59508cdaf2d45e63/yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb", size = 325765 }, + { url = "https://files.pythonhosted.org/packages/7e/18/03a5834ccc9177f97ca1bbb245b93c13e58e8225276f01eedc4cc98ab820/yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272", size = 344444 }, + { url = "https://files.pythonhosted.org/packages/c8/03/a713633bdde0640b0472aa197b5b86e90fbc4c5bc05b727b714cd8a40e6d/yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6", size = 340760 }, + { url = "https://files.pythonhosted.org/packages/eb/99/f6567e3f3bbad8fd101886ea0276c68ecb86a2b58be0f64077396cd4b95e/yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e", size = 346484 }, + { url = "https://files.pythonhosted.org/packages/8e/a9/84717c896b2fc6cb15bd4eecd64e34a2f0a9fd6669e69170c73a8b46795a/yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb", size = 359864 }, + { url = "https://files.pythonhosted.org/packages/1e/2e/d0f5f1bef7ee93ed17e739ec8dbcb47794af891f7d165fa6014517b48169/yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393", size = 364537 }, + { url = "https://files.pythonhosted.org/packages/97/8a/568d07c5d4964da5b02621a517532adb8ec5ba181ad1687191fffeda0ab6/yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285", size = 357861 }, + { url = "https://files.pythonhosted.org/packages/7d/e3/924c3f64b6b3077889df9a1ece1ed8947e7b61b0a933f2ec93041990a677/yarl-1.18.3-cp312-cp312-win32.whl", hash = "sha256:f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2", size = 84097 }, + { url = "https://files.pythonhosted.org/packages/34/45/0e055320daaabfc169b21ff6174567b2c910c45617b0d79c68d7ab349b02/yarl-1.18.3-cp312-cp312-win_amd64.whl", hash = "sha256:7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477", size = 90399 }, + { url = "https://files.pythonhosted.org/packages/30/c7/c790513d5328a8390be8f47be5d52e141f78b66c6c48f48d241ca6bd5265/yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb", size = 140789 }, + { url = "https://files.pythonhosted.org/packages/30/aa/a2f84e93554a578463e2edaaf2300faa61c8701f0898725842c704ba5444/yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa", size = 94144 }, + { url = "https://files.pythonhosted.org/packages/c6/fc/d68d8f83714b221a85ce7866832cba36d7c04a68fa6a960b908c2c84f325/yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782", size = 91974 }, + { url = "https://files.pythonhosted.org/packages/56/4e/d2563d8323a7e9a414b5b25341b3942af5902a2263d36d20fb17c40411e2/yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0", size = 333587 }, + { url = "https://files.pythonhosted.org/packages/25/c9/cfec0bc0cac8d054be223e9f2c7909d3e8442a856af9dbce7e3442a8ec8d/yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482", size = 344386 }, + { url = "https://files.pythonhosted.org/packages/ab/5d/4c532190113b25f1364d25f4c319322e86232d69175b91f27e3ebc2caf9a/yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186", size = 345421 }, + { url = "https://files.pythonhosted.org/packages/23/d1/6cdd1632da013aa6ba18cee4d750d953104a5e7aac44e249d9410a972bf5/yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58", size = 339384 }, + { url = "https://files.pythonhosted.org/packages/9a/c4/6b3c39bec352e441bd30f432cda6ba51681ab19bb8abe023f0d19777aad1/yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53", size = 326689 }, + { url = "https://files.pythonhosted.org/packages/23/30/07fb088f2eefdc0aa4fc1af4e3ca4eb1a3aadd1ce7d866d74c0f124e6a85/yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2", size = 345453 }, + { url = "https://files.pythonhosted.org/packages/63/09/d54befb48f9cd8eec43797f624ec37783a0266855f4930a91e3d5c7717f8/yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8", size = 341872 }, + { url = "https://files.pythonhosted.org/packages/91/26/fd0ef9bf29dd906a84b59f0cd1281e65b0c3e08c6aa94b57f7d11f593518/yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1", size = 347497 }, + { url = "https://files.pythonhosted.org/packages/d9/b5/14ac7a256d0511b2ac168d50d4b7d744aea1c1aa20c79f620d1059aab8b2/yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a", size = 359981 }, + { url = "https://files.pythonhosted.org/packages/ca/b3/d493221ad5cbd18bc07e642894030437e405e1413c4236dd5db6e46bcec9/yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10", size = 366229 }, + { url = "https://files.pythonhosted.org/packages/04/56/6a3e2a5d9152c56c346df9b8fb8edd2c8888b1e03f96324d457e5cf06d34/yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8", size = 360383 }, + { url = "https://files.pythonhosted.org/packages/fd/b7/4b3c7c7913a278d445cc6284e59b2e62fa25e72758f888b7a7a39eb8423f/yarl-1.18.3-cp313-cp313-win32.whl", hash = "sha256:61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d", size = 310152 }, + { url = "https://files.pythonhosted.org/packages/f5/d5/688db678e987c3e0fb17867970700b92603cadf36c56e5fb08f23e822a0c/yarl-1.18.3-cp313-cp313-win_amd64.whl", hash = "sha256:578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c", size = 315723 }, + { url = "https://files.pythonhosted.org/packages/f5/4b/a06e0ec3d155924f77835ed2d167ebd3b211a7b0853da1cf8d8414d784ef/yarl-1.18.3-py3-none-any.whl", hash = "sha256:b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b", size = 45109 }, +] + +[[package]] +name = "zipp" +version = "3.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", size = 24545 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630 }, +] + +[[package]] +name = "zipstream-ng" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/16/5d9224baf640214255c34a0a0e9528c8403d2b89e2ba7df9d7cada58beb1/zipstream_ng-1.8.0.tar.gz", hash = "sha256:b7129d2c15d26934b3e1cb22256593b6bdbd03c553c26f4199a5bf05110642bc", size = 35887 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/81/11ecdfd5370d6c383f0188a6f2fa2842499e1be617e678d1845f972c6821/zipstream_ng-1.8.0-py3-none-any.whl", hash = "sha256:e7196cb845cf924ed12e7a3b38404ef9e82a5a699801295f5f4cf601449e2bf6", size = 23082 }, +] From 6a71c049509712f9f4d725de0e39690f3e1745b3 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Wed, 30 Apr 2025 23:07:09 -0400 Subject: [PATCH 5/5] fix(docs): Minor docs tweaks --- docs/source/changelog.md | 2 +- docs/source/conf.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/changelog.md b/docs/source/changelog.md index ad7011b03..4cc4903a9 100644 --- a/docs/source/changelog.md +++ b/docs/source/changelog.md @@ -5,7 +5,7 @@ ## Not yet released -## 0.4.0-beta12 (2025-03-14) +## 0.4.0-beta12 (2025-04-30) - Per-field editing permissions for collections, along with UI for managing them. - Before publishing to a collection or adding a work to a collection: diff --git a/docs/source/conf.py b/docs/source/conf.py index 3f45806b1..d7919763e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -9,7 +9,7 @@ project = "Knowledge Commons Works" copyright = "2025, Mesh Research" author = "Mesh Research" -release = "0.3.8" +release = "0.4.0" # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration